Page MenuHomePhabricator

D12962.id43097.diff
No OneTemporary

D12962.id43097.diff

diff --git a/lib/actions/aux-user-actions.js b/lib/actions/aux-user-actions.js
--- a/lib/actions/aux-user-actions.js
+++ b/lib/actions/aux-user-actions.js
@@ -8,9 +8,12 @@
const setPeerDeviceListsActionType = 'SET_PEER_DEVICE_LISTS';
+const removePeerUsersActionType = 'REMOVE_PEER_USERS';
+
export {
setAuxUserFIDsActionType,
addAuxUserFIDsActionType,
clearAuxUserFIDsActionType,
setPeerDeviceListsActionType,
+ removePeerUsersActionType,
};
diff --git a/lib/reducers/aux-user-reducer.js b/lib/reducers/aux-user-reducer.js
--- a/lib/reducers/aux-user-reducer.js
+++ b/lib/reducers/aux-user-reducer.js
@@ -4,6 +4,7 @@
setAuxUserFIDsActionType,
addAuxUserFIDsActionType,
clearAuxUserFIDsActionType,
+ removePeerUsersActionType,
setPeerDeviceListsActionType,
} from '../actions/aux-user-actions.js';
import { setClientDBStoreActionType } from '../actions/client-db-store-actions.js';
@@ -182,6 +183,18 @@
});
}
+ return {
+ auxUserStore: processStoreOps(state, removeUsersOps),
+ auxUserStoreOperations: removeUsersOps,
+ };
+ } else if (action.type === removePeerUsersActionType) {
+ const removeUsersOps: RemoveAuxUserInfosOperation[] = [
+ {
+ type: 'remove_aux_user_infos',
+ payload: { ids: action.payload.userIDs },
+ },
+ ];
+
return {
auxUserStore: processStoreOps(state, removeUsersOps),
auxUserStoreOperations: removeUsersOps,
diff --git a/lib/reducers/user-reducer.js b/lib/reducers/user-reducer.js
--- a/lib/reducers/user-reducer.js
+++ b/lib/reducers/user-reducer.js
@@ -3,6 +3,7 @@
import _isEqual from 'lodash/fp/isEqual.js';
import _keyBy from 'lodash/fp/keyBy.js';
+import { removePeerUsersActionType } from '../actions/aux-user-actions.js';
import { setClientDBStoreActionType } from '../actions/client-db-store-actions.js';
import { legacySiweAuthActionTypes } from '../actions/siwe-actions.js';
import {
@@ -533,6 +534,29 @@
newInconsistencies,
userStoreOps,
];
+ } else if (
+ action.type === removePeerUsersActionType &&
+ !relyingOnAuthoritativeKeyserver
+ ) {
+ const userStoreOps: UserStoreOperation[] = [
+ {
+ type: 'remove_users',
+ payload: { ids: action.payload.userIDs },
+ },
+ ];
+
+ const processedUserInfos: UserInfos = processUserStoreOps(
+ state.userInfos,
+ userStoreOps,
+ );
+
+ return [
+ {
+ userInfos: processedUserInfos,
+ },
+ [],
+ userStoreOps,
+ ];
} else if (action.type === updateUserAvatarActionTypes.success) {
const newUserInfos = _keyBy(userInfo => userInfo.id)(
action.payload.updates.userInfos,
diff --git a/lib/tunnelbroker/use-peer-to-peer-message-handler.js b/lib/tunnelbroker/use-peer-to-peer-message-handler.js
--- a/lib/tunnelbroker/use-peer-to-peer-message-handler.js
+++ b/lib/tunnelbroker/use-peer-to-peer-message-handler.js
@@ -4,6 +4,7 @@
import _isEqual from 'lodash/fp/isEqual.js';
import * as React from 'react';
+import { removePeerUsersActionType } from '../actions/aux-user-actions.js';
import { logOutActionTypes, useLogOut } from '../actions/user-actions.js';
import {
useBroadcastDeviceListUpdates,
@@ -37,7 +38,7 @@
import { hasHigherDeviceID, olmSessionErrors } from '../utils/olm-utils.js';
import { getClientMessageIDFromTunnelbrokerMessageID } from '../utils/peer-to-peer-communication-utils.js';
import { useDispatchActionPromise } from '../utils/redux-promise-utils.js';
-import { useSelector } from '../utils/redux-utils.js';
+import { useDispatch, useSelector } from '../utils/redux-utils.js';
// When logout is requested by primary device, logging out of Identity Service
// is already handled by the primary device
@@ -61,6 +62,7 @@
);
const allPeerDevices = useSelector(getAllPeerDevices);
+ const dispatch = useDispatch();
const dispatchActionPromise = useDispatchActionPromise();
const primaryDeviceRequestedLogOut = useLogOut(primaryRequestLogoutOptions);
@@ -118,7 +120,10 @@
primaryDeviceRequestedLogOut(),
);
} else {
- // TODO: update peer list
+ dispatch({
+ type: removePeerUsersActionType,
+ payload: { userIDs: [senderInfo.userID] },
+ });
}
} else {
console.warn(
@@ -130,6 +135,7 @@
[
allPeerDevices,
broadcastDeviceListUpdates,
+ dispatch,
dispatchActionPromise,
getAuthMetadata,
identityClient,
diff --git a/lib/types/aux-user-types.js b/lib/types/aux-user-types.js
--- a/lib/types/aux-user-types.js
+++ b/lib/types/aux-user-types.js
@@ -27,6 +27,8 @@
+farcasterUsers: $ReadOnlyArray<FarcasterUser>,
};
+export type RemovePeerUsersPayload = { +userIDs: $ReadOnlyArray<string> };
+
export type SetPeerDeviceListsPayload = {
+deviceLists: UsersRawDeviceLists,
+usersPlatformDetails: {
diff --git a/lib/types/redux-types.js b/lib/types/redux-types.js
--- a/lib/types/redux-types.js
+++ b/lib/types/redux-types.js
@@ -22,6 +22,7 @@
AuxUserStore,
SetAuxUserFIDsPayload,
AddAuxUserFIDsPayload,
+ RemovePeerUsersPayload,
SetPeerDeviceListsPayload,
} from './aux-user-types.js';
import type {
@@ -1434,6 +1435,10 @@
+type: 'CLEAR_AUX_USER_FIDS',
+payload?: void,
}
+ | {
+ +type: 'REMOVE_PEER_USERS',
+ +payload: RemovePeerUsersPayload,
+ }
| {
+type: 'SET_PEER_DEVICE_LISTS',
+payload: SetPeerDeviceListsPayload,

File Metadata

Mime Type
text/plain
Expires
Fri, Sep 20, 11:44 PM (21 h, 19 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2154814
Default Alt Text
D12962.id43097.diff (5 KB)

Event Timeline