From 54f76d2a64e683a72e16814c6c174bf5c7e4656b Mon Sep 17 00:00:00 2001 From: DIYgod Date: Wed, 8 Feb 2023 19:10:29 +0000 Subject: [PATCH] feat: support for multi char --- src/models/site.model.ts | 86 ++++++---------------------------------- src/queries/site.ts | 35 +++++++++------- 2 files changed, 32 insertions(+), 89 deletions(-) diff --git a/src/models/site.model.ts b/src/models/site.model.ts index dcb30d80..8fdaa938 100644 --- a/src/models/site.model.ts +++ b/src/models/site.model.ts @@ -100,25 +100,17 @@ export const getUserSites = async (params: GetUserSitesParams) => { } export type GetAccountSitesParams = { - account: GeneralAccount + handle: string unidata?: Unidata } export const getAccountSites = ( params: GetAccountSitesParams, ): Promise => { - switch (params.account.type) { - case "email": - return getUserSites({ - handle: params.account.character.handle, - unidata: params.unidata, - }) - case "wallet": - return getUserSites({ - address: params.account.address, - unidata: params.unidata, - }) - } + return getUserSites({ + handle: params.handle, + unidata: params.unidata, + }) } export const getSite = async (input: string, customUnidata?: Unidata) => { @@ -210,27 +202,15 @@ export const getSites = async (input: string[]) => { export const getSubscription = async ( siteId: string, - account: GeneralAccount, + handle: string, customUnidata?: Unidata, ) => { - const links = await (() => { - switch (account.type) { - case "email": - return (customUnidata || unidata).links.get({ - source: "Crossbell Link", - identity: account.character.handle, - platform: "Crossbell", - filter: { to: siteId }, - }) - case "wallet": - return (customUnidata || unidata).links.get({ - source: "Crossbell Link", - identity: account.address, - platform: "Ethereum", - filter: { to: siteId }, - }) - } - })() + const links = await (customUnidata || unidata).links.get({ + source: "Crossbell Link", + identity: handle, + platform: "Crossbell", + filter: { to: siteId }, + }) return !!links?.list?.length } @@ -387,27 +367,6 @@ export async function createSite( ) } -export async function subscribeToSite( - input: { - userId: string - siteId: string - }, - customUnidata?: Unidata, -) { - return (customUnidata || unidata).links.set( - { - source: "Crossbell Link", - identity: input.userId, - platform: "Ethereum", - action: "add", - }, - { - to: input.siteId, - type: "follow", - }, - ) -} - export async function subscribeToSites( input: { user: Profile @@ -427,27 +386,6 @@ export async function subscribeToSites( } } -export async function unsubscribeFromSite( - input: { - userId: string - siteId: string - }, - customUnidata?: Unidata, -) { - return (customUnidata || unidata).links.set( - { - source: "Crossbell Link", - identity: input.userId, - platform: "Ethereum", - action: "remove", - }, - { - to: input.siteId, - type: "follow", - }, - ) -} - const xLogOperatorPermissions: CharacterOperatorPermission[] = [ CharacterOperatorPermission.SET_NOTE_URI, CharacterOperatorPermission.DELETE_NOTE, diff --git a/src/queries/site.ts b/src/queries/site.ts index ca60035b..22cc6240 100644 --- a/src/queries/site.ts +++ b/src/queries/site.ts @@ -13,14 +13,15 @@ import { useUnidata } from "./unidata" export const useAccountSites = () => { const unidata = useUnidata() const account = useAccountState((s) => s.computed.account) - const address = account?.type === "email" ? account.email : account?.address + const handle = + account?.type === "email" ? account.character?.handle : account?.handle - return useQuery(["getUserSites", address], async () => { - if (!account) { + return useQuery(["getUserSites", handle], async () => { + if (!account || !handle) { return [] } - return siteModel.getAccountSites({ account, unidata }) + return siteModel.getAccountSites({ handle, unidata }) }) } @@ -45,18 +46,18 @@ export const useGetSites = (input: string[]) => { export const useGetSubscription = (siteId: string | undefined) => { const account = useAccountState((s) => s.computed.account) + const handle = + account?.type === "email" ? account.character?.handle : account?.handle const unidata = useUnidata() - return useQuery( - ["getSubscription", siteId, account?.characterId], - async () => { - if (!account || !siteId) { - return false - } + console.log(["getSubscription", siteId, handle]) + return useQuery(["getSubscription", siteId, handle], async () => { + if (!handle || !siteId) { + return false + } - return siteModel.getSubscription(siteId, account, unidata) - }, - ) + return siteModel.getSubscription(siteId, handle, unidata) + }) } export const useGetSiteSubscriptions = (data: { siteId: string }) => { @@ -135,7 +136,9 @@ export function useSubscribeToSite() { queryClient.invalidateQueries([ "getSubscription", variables.siteId, - account?.characterId, + account?.type === "email" + ? account?.character?.handle + : account?.handle, ]), ]) }, @@ -187,7 +190,9 @@ export function useUnsubscribeFromSite() { queryClient.invalidateQueries([ "getSubscription", variables.siteId, - account?.characterId, + account?.type === "email" + ? account?.character?.handle + : account?.handle, ]), ]) },