napi_value _OnDidChangeKeyboardLayout()

in src/keymapping.cc [74:100]


napi_value _OnDidChangeKeyboardLayout(napi_env env, napi_callback_info info) {
  size_t argc = 2;
  napi_value args[2];
  NotificationCallbackData *data;
  NAPI_CALL(env, napi_get_instance_data(env, (void**)&data));
  NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL));

  NAPI_ASSERT(env, argc == 1, "Wrong number of arguments. Expects a single argument.");

  napi_valuetype valuetype0;
  NAPI_CALL(env, napi_typeof(env, args[0], &valuetype0));
  NAPI_ASSERT(env, valuetype0 == napi_function, "Wrong type of arguments. Expects a function as first argument.");

  napi_value func = args[0];

  napi_value resource_name;
  NAPI_CALL(env, napi_create_string_utf8(env, "onDidChangeKeyboardLayoutCallback", NAPI_AUTO_LENGTH, &resource_name));

  // Convert the callback retrieved from JavaScript into a thread-safe function
  NAPI_CALL(env, napi_create_threadsafe_function(env, func, NULL, resource_name, 0, 1, NULL,
                                                 FinalizeThreadsafeFunction, NULL, NotifyJS,
                                                 &data->tsfn));

  registerKeyboardLayoutChangeListener(data);

  return napi_fetch_undefined(env);
}