diff --git a/lib/types/identity-service-types.js b/lib/types/identity-service-types.js --- a/lib/types/identity-service-types.js +++ b/lib/types/identity-service-types.js @@ -89,6 +89,23 @@ +walletAddress?: ?string, }; +type FarcasterUser = { + +userID: string, + +username: string, + +farcasterID: string, +}; + +export const farcasterUserValidator: TInterface = + tShape({ + userID: t.String, + username: t.String, + farcasterID: t.String, + }); + +export const farcasterUsersValidator: TList> = t.list( + farcasterUserValidator, +); + export const userDeviceOlmInboundKeysValidator: TInterface = tShape({ keys: t.dict(t.String, t.maybe(deviceOlmInboundKeysValidator)), @@ -140,6 +157,10 @@ userID: string, nonceChallengeResponse: SignedMessage, ) => Promise; + // getFarcasterUsers is only implemented on native at the moment + +getFarcasterUsers?: ( + farcasterIDs: $ReadOnlyArray, + ) => Promise<$ReadOnlyArray>; } export type IdentityServiceAuthLayer = { diff --git a/native/identity-service/identity-service-context-provider.react.js b/native/identity-service/identity-service-context-provider.react.js --- a/native/identity-service/identity-service-context-provider.react.js +++ b/native/identity-service/identity-service-context-provider.react.js @@ -24,6 +24,7 @@ type UserDevicesOlmInboundKeys, deviceOlmInboundKeysValidator, userDeviceOlmInboundKeysValidator, + farcasterUsersValidator, } from 'lib/types/identity-service-types.js'; import { getContentSigningKey } from 'lib/utils/crypto-utils.js'; import { assertWithValidator } from 'lib/utils/validation-utils.js'; @@ -533,6 +534,12 @@ payload, ); }, + getFarcasterUsers: async (farcasterIDs: $ReadOnlyArray) => { + const farcasterUsersJSONString = + await commRustModule.getFarcasterUsers(farcasterIDs); + const farcasterUsers = JSON.parse(farcasterUsersJSONString); + return assertWithValidator(farcasterUsers, farcasterUsersValidator); + }, }), [getAuthMetadata], );