Page MenuHomePhorge

D14877.1765013101.diff
No OneTemporary

Size
4 KB
Referenced Files
None
Subscribers
None

D14877.1765013101.diff

diff --git a/lib/handlers/sync-current-user-info-handler.react.js b/lib/handlers/sync-current-user-info-handler.react.js
new file mode 100644
--- /dev/null
+++ b/lib/handlers/sync-current-user-info-handler.react.js
@@ -0,0 +1,54 @@
+// @flow
+
+import * as React from 'react';
+
+import { setSyncedMetadataEntryActionType } from '../actions/synced-metadata-actions.js';
+import { usePersistedStateLoaded } from '../selectors/app-state-selectors.js';
+import { isLoggedIn } from '../selectors/user-selectors.js';
+import { syncedMetadataNames } from '../types/synced-metadata-types.js';
+import { useDispatch, useSelector } from '../utils/redux-utils.js';
+
+function SyncCurrentUserInfoHandler(): React.Node {
+ const loggedIn = useSelector(isLoggedIn);
+ const stateLoaded = usePersistedStateLoaded();
+ const dispatch = useDispatch();
+
+ const syncedMetadataCurrentUserInfo = useSelector(
+ state =>
+ state.syncedMetadataStore.syncedMetadata[
+ syncedMetadataNames.CURRENT_USER_INFO
+ ] ?? undefined,
+ );
+ const currentUserInfo = useSelector(state => state.currentUserInfo);
+
+ const currentUserInfoIsSynced = React.useMemo(
+ () => syncedMetadataCurrentUserInfo === JSON.stringify(currentUserInfo),
+ [currentUserInfo, syncedMetadataCurrentUserInfo],
+ );
+
+ React.useEffect(() => {
+ if (!loggedIn) {
+ return;
+ }
+
+ if (!currentUserInfoIsSynced) {
+ dispatch({
+ type: setSyncedMetadataEntryActionType,
+ payload: {
+ name: syncedMetadataNames.CURRENT_USER_INFO,
+ data: JSON.stringify(currentUserInfo),
+ },
+ });
+ }
+ }, [
+ currentUserInfo,
+ currentUserInfoIsSynced,
+ dispatch,
+ loggedIn,
+ stateLoaded,
+ ]);
+
+ return null;
+}
+
+export { SyncCurrentUserInfoHandler };
diff --git a/lib/types/synced-metadata-types.js b/lib/types/synced-metadata-types.js
--- a/lib/types/synced-metadata-types.js
+++ b/lib/types/synced-metadata-types.js
@@ -12,6 +12,7 @@
ENABLED_APPS: 'enabled_apps',
GLOBAL_THEME_INFO: 'global_theme_info',
ALERT_STORE: 'alert_store',
+ CURRENT_USER_INFO: 'current_user_info',
});
export type SyncedMetadataName = $Values<typeof syncedMetadataNames>;
diff --git a/native/root.react.js b/native/root.react.js
--- a/native/root.react.js
+++ b/native/root.react.js
@@ -42,6 +42,7 @@
import { DBOpsHandler } from 'lib/handlers/db-ops-handler.react.js';
import { HoldersHandler } from 'lib/handlers/holders-handler.react.js';
import { InitialStateSharingHandler } from 'lib/handlers/initial-state-sharing-handler.react.js';
+import { SyncCurrentUserInfoHandler } from 'lib/handlers/sync-current-user-info-handler.react.js';
import { SyncStoreVersionHandler } from 'lib/handlers/sync-store-version-handler.react.js';
import { TunnelbrokerDeviceTokenHandler } from 'lib/handlers/tunnelbroker-device-token-handler.react.js';
import { UserInfosHandler } from 'lib/handlers/user-infos-handler.react.js';
@@ -302,6 +303,7 @@
<UserInfosHandler />
<TunnelbrokerDeviceTokenHandler />
<SyncStoreVersionHandler />
+ <SyncCurrentUserInfoHandler />
<HoldersHandler />
</>
);
diff --git a/web/app.react.js b/web/app.react.js
--- a/web/app.react.js
+++ b/web/app.react.js
@@ -29,6 +29,7 @@
import SyncCommunityStoreHandler from 'lib/components/sync-community-store-handler.react.js';
import { DBOpsHandler } from 'lib/handlers/db-ops-handler.react.js';
import { HoldersHandler } from 'lib/handlers/holders-handler.react.js';
+import { SyncCurrentUserInfoHandler } from 'lib/handlers/sync-current-user-info-handler.react.js';
import { SyncStoreVersionHandler } from 'lib/handlers/sync-store-version-handler.react.js';
import { TunnelbrokerDeviceTokenHandler } from 'lib/handlers/tunnelbroker-device-token-handler.react.js';
import { UserInfosHandler } from 'lib/handlers/user-infos-handler.react.js';
@@ -265,6 +266,7 @@
<UserInfosHandler />
<TunnelbrokerDeviceTokenHandler />
<SyncStoreVersionHandler />
+ <SyncCurrentUserInfoHandler />
<FarcasterChannelPrefetchHandler />
<FarcasterDataHandler />
<AutoJoinCommunityHandler />

File Metadata

Mime Type
text/plain
Expires
Sat, Dec 6, 9:25 AM (3 h, 50 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5835794
Default Alt Text
D14877.1765013101.diff (4 KB)

Event Timeline