Skip to content

Commit

Permalink
Merge pull request #41 from dappforce/fix/provider
Browse files Browse the repository at this point in the history
Add validation for only enabled provider
  • Loading branch information
teodorus-nathaniel authored Sep 6, 2024
2 parents f94ef47 + cdc2c15 commit f7a60c9
Show file tree
Hide file tree
Showing 12 changed files with 21 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ export default function LinkedIdentitiesContent() {
withAtSymbolForUsername,
}) => {
const isLinked = linkedIdentity?.externalProviders.find(
(p) => p.provider === provider
(p) => p.provider === provider && p.enabled
)
let text = `Connect your ${name}`
if (isLinked) {
Expand Down Expand Up @@ -158,7 +158,7 @@ function EvmConnectButton() {
getLinkedIdentityQuery.useQuery(grillAddress ?? '')

const hasEvmProvider = linkedIdentity?.externalProviders.some(
(p) => p.provider === IdentityProvider.Evm
(p) => p.provider === IdentityProvider.Evm && p.enabled
)

const {
Expand Down
2 changes: 1 addition & 1 deletion src/components/auth/common/evm/CommonEvmModalContent.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ export const CommonEVMLoginContent = ({
useEffect(() => {
if (
linkedIdentity?.externalProviders.find(
(p) => p.provider === IdentityProvider.Evm
(p) => p.provider === IdentityProvider.Evm && p.enabled
)
) {
const res = onSuccess?.(linkedIdentity)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ const useLoginInTelegramMiniApps = () => {
useEffect(() => {
if (!data) return
const foundMatchingProvider = linkedIdentity?.externalProviders.find(
(p) => p.provider === IdentityProvider.Telegram
(p) => p.provider === IdentityProvider.Telegram && p.enabled
)
if (!linkedIdentity || !foundMatchingProvider) return

Expand Down
11 changes: 6 additions & 5 deletions src/components/wallets/UnlinkWalletModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,18 @@ export default function UnlinkWalletModal({
const { mutate, isLoading, isSuccess, reset } = useUpdateExternalProvider({
onSuccess: (_, { externalProvider }) => {
reloadEveryIntervalUntilLinkedIdentityFound((identity) => {
const found = identity?.externalProviders.find(
const isStillEnabled = identity?.externalProviders.find(
(p) =>
// @ts-expect-error different provider for IdentityProvider, one from generated type, one from sdk
p.provider === externalProvider.provider &&
p.externalId === externalProvider.id
p.externalId === externalProvider.id &&
p.enabled
)
if (!found) {
refetch()
if (!isStillEnabled) {
props.closeModal()
return true
}
return !found
return false
})
},
})
Expand Down
3 changes: 2 additions & 1 deletion src/hooks/useLinkedProviders.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ export default function useLinkedAddress(
const usedLoading = address ? isLoadingMainAddress : isLoadingMy

const providers = usedLinkedIdentity?.externalProviders.filter(
(identity) => identity.provider === identityProvider.toString()
(identity) =>
identity.provider === identityProvider.toString() && identity.enabled
)
let latestAddress = ''
let latestCreatedTime = 0
Expand Down
2 changes: 1 addition & 1 deletion src/hooks/useTgLink.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export default function useTgLink(address: string, asLink?: boolean) {
})

const telegramProvider = linkedIdentity?.externalProviders.find(
(p) => p.provider === IdentityProvider.Telegram
(p) => p.provider === IdentityProvider.Telegram && p.enabled
)
const telegramLink = shouldSeeUsername
? getUserTelegramLink(linkedIdentity)
Expand Down
2 changes: 1 addition & 1 deletion src/providers/config/NeynarLoginProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ export default function NeynarLoginProvider({
getLinkedIdentityQuery.useQuery(myGrillAddress)
useEffect(() => {
const foundIdentity = linkedIdentity?.externalProviders.find(
(p) => p.provider === IdentityProvider.Farcaster
(p) => p.provider === IdentityProvider.Farcaster && p.enabled
)
if (linkedIdentity && foundIdentity) {
resetLinking()
Expand Down
2 changes: 1 addition & 1 deletion src/providers/config/TelegramLoginProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ export default function TelegramLoginProvider({
myGrillAddress
)
const foundMatchingProvider = linkedIdentity?.externalProviders.find(
(p) => p.provider === IdentityProvider.Telegram
(p) => p.provider === IdentityProvider.Telegram && p.enabled
)
if (!linkedIdentity || !foundMatchingProvider) return false

Expand Down
1 change: 1 addition & 0 deletions src/services/datahub/identity/fetcher.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export type Identity = {
externalId: string
username?: string | null
createdAtTime: string
enabled: boolean
}[]
}

Expand Down
3 changes: 2 additions & 1 deletion src/services/datahub/identity/mutation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,8 @@ export const useAddExternalProviderToIdentity = mutationWrapper(
(p) =>
// @ts-expect-error different provider for IdentityProvider, one from generated type, one from sdk
p.provider === externalProvider.provider &&
p.externalId === externalProvider.id
p.externalId === externalProvider.id &&
p.enabled
)
)
},
Expand Down
1 change: 1 addition & 0 deletions src/services/datahub/identity/subscription.ts
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ async function processSessionCreated(
provider: p.provider,
username: p.username,
createdAtTime: p.createdAtTime,
enabled: p.enabled,
})) ?? [],
}
if (session.id === useMyAccount.getState().address)
Expand Down
3 changes: 2 additions & 1 deletion src/utils/links.ts
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,8 @@ export function getUserTelegramLink(
) {
if (!linkedIdentity) return undefined
const telegram = linkedIdentity.externalProviders.find(
(provider) => provider.provider === IdentityProvider.Telegram
(provider) =>
provider.provider === IdentityProvider.Telegram && provider.enabled
)
if (!telegram?.username) return undefined
return `https://t.me/${telegram.username}`
Expand Down

0 comments on commit f7a60c9

Please sign in to comment.