Skip to content

Commit

Permalink
refactor: mark activatedSiteAdaptor as nullable (#10345)
Browse files Browse the repository at this point in the history
  • Loading branch information
Jack-Works committed Aug 10, 2023
1 parent c272cb2 commit 707a9b9
Show file tree
Hide file tree
Showing 35 changed files with 80 additions and 80 deletions.
2 changes: 1 addition & 1 deletion packages/mask/src/ShadowRootAttachPointRoot.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export function ShadowRootAttachPointRoot(children: React.ReactNode) {
MaskThemeProvider({
useMaskIconPalette: useSiteThemeMode,
useTheme: useMaskSiteAdaptorMixedTheme,
CustomSnackbarOffsetY: isFacebook(activatedSiteAdaptorUI) ? 80 : undefined,
CustomSnackbarOffsetY: isFacebook(activatedSiteAdaptorUI!) ? 80 : undefined,
children,
}),
(children) => SharedContextProvider({ children }),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ export function Composition({ type = 'timeline', requireClipboardPermission }: P
// #endregion

const UI = useRef<CompositionRef>(null)
const networkSupport = activatedSiteAdaptorUI.injection.newPostComposition?.supportedOutputTypes
const networkSupport = activatedSiteAdaptorUI!.injection.newPostComposition?.supportedOutputTypes
const recipients = useRecipientsList()
const isE2E_Disabled = (encode: EncryptionMethodType) => {
if (!connectStatus.currentPersona && !connectStatus.hasPersona) return E2EUnavailableReason.NoPersona
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ import Services from '../../extension/service.js'
import { downloadUrl } from '../../utils/utils.js'

export async function SteganographyPayload(data: string | Uint8Array) {
const password = activatedSiteAdaptorUI.configuration.steganography?.password?.() || 'mask'
const password = activatedSiteAdaptorUI!.configuration.steganography?.password?.() || 'mask'
const preset = typeof data === 'string' ? SteganographyPreset.Preset2022 : SteganographyPreset.Preset2023
const blankImage = await downloadUrl(SteganographyPresetImage[preset]).then((x) => x.arrayBuffer())
const secretImage = await Services.Crypto.steganographyEncodeImage(new Uint8Array(blankImage), {
preset,
data,
password,
grayscaleAlgorithm:
activatedSiteAdaptorUI.configuration.steganography?.grayscaleAlgorithm ?? GrayscaleAlgorithm.NONE,
activatedSiteAdaptorUI!.configuration.steganography?.grayscaleAlgorithm ?? GrayscaleAlgorithm.NONE,
})
const blob = new Blob([secretImage], { type: 'image/png' })
return blob
Expand Down
22 changes: 11 additions & 11 deletions packages/mask/src/components/CompositionDialog/useSubmit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export function useSubmit(onClose: () => void, reason: 'timeline' | 'popup' | 'r
async (info: SubmitComposition) => {
const { content, encode, target } = info
const fallbackProfile: ProfileIdentifier | undefined =
activatedSiteAdaptor_state.profiles.value[0]?.identifier
activatedSiteAdaptor_state!.profiles.value[0]?.identifier
if (encode === 'image' && !lastRecognizedIdentity) throw new Error('No Current Profile')

// rawEncrypted is either string or Uint8Array
Expand All @@ -37,10 +37,10 @@ export function useSubmit(onClose: () => void, reason: 'timeline' | 'popup' | 'r
content,
target,
lastRecognizedIdentity?.identifier ?? fallbackProfile,
activatedSiteAdaptorUI.encryptPayloadNetwork,
activatedSiteAdaptorUI!.encryptPayloadNetwork,
)
// Since we cannot directly send binary in the composition box, we need to encode it into a string.
const encrypted = encodeByNetwork(activatedSiteAdaptorUI.encryptPayloadNetwork, rawEncrypted)
const encrypted = encodeByNetwork(activatedSiteAdaptorUI!.encryptPayloadNetwork, rawEncrypted)

if (encode === 'image') {
const decoratedText = decorateEncryptedText('', t, content.meta)
Expand All @@ -65,7 +65,7 @@ export function useSubmit(onClose: () => void, reason: 'timeline' | 'popup' | 'r
}

function pasteTextEncode(text: string, reason: 'timeline' | 'popup' | 'reply') {
activatedSiteAdaptorUI.automation.nativeCompositionDialog?.appendText?.(text, {
activatedSiteAdaptorUI!.automation.nativeCompositionDialog?.appendText?.(text, {
recover: true,
reason,
})
Expand All @@ -77,7 +77,7 @@ async function pasteImage(
) {
const img = await SteganographyPayload(encrypted)
// Don't await this, otherwise the dialog won't disappear
activatedSiteAdaptorUI.automation.nativeCompositionDialog!.attachImage!(img, {
activatedSiteAdaptorUI!.automation.nativeCompositionDialog!.attachImage!(img, {
recover: true,
relatedTextPayload,
reason,
Expand All @@ -87,8 +87,8 @@ async function pasteImage(
// TODO: Provide API to plugin to post-process post content,
// then we can move these -PreText's and meta readers into plugin's own context
function decorateEncryptedText(encrypted: string, t: I18NFunction, meta?: Meta): string | null {
const hasOfficialAccount = isTwitter(activatedSiteAdaptorUI) || isFacebook(activatedSiteAdaptorUI)
const officialAccount = isTwitter(activatedSiteAdaptorUI) ? t('twitter_account') : t('facebook_account')
const hasOfficialAccount = isTwitter(activatedSiteAdaptorUI!) || isFacebook(activatedSiteAdaptorUI!)
const officialAccount = isTwitter(activatedSiteAdaptorUI!) ? t('twitter_account') : t('facebook_account')

// Note: since this is in the composition stage, we can assume plugins don't insert old version of meta.
if (meta?.has(`${PluginID.RedPacket}:1`) || meta?.has(`${PluginID.RedPacket}_nft:1`)) {
Expand All @@ -104,22 +104,22 @@ function decorateEncryptedText(encrypted: string, t: I18NFunction, meta?: Meta):
? t('additional_post_box__encrypted_post_pre_ito_sns_official_account', {
encrypted,
account: officialAccount,
sns: SOCIAL_MEDIA_NAME[activatedSiteAdaptorUI.networkIdentifier],
sns: SOCIAL_MEDIA_NAME[activatedSiteAdaptorUI!.networkIdentifier],
})
: t('additional_post_box__encrypted_post_pre_ito', {
encrypted,
sns: SOCIAL_MEDIA_NAME[activatedSiteAdaptorUI.networkIdentifier],
sns: SOCIAL_MEDIA_NAME[activatedSiteAdaptorUI!.networkIdentifier],
})
} else if (meta?.has(`${PluginID.FileService}:3`)) {
return hasOfficialAccount
? t('additional_post_box__encrypted_post_pre_file_service_sns_official_account', {
encrypted,
account: officialAccount,
sns: SOCIAL_MEDIA_NAME[activatedSiteAdaptorUI.networkIdentifier],
sns: SOCIAL_MEDIA_NAME[activatedSiteAdaptorUI!.networkIdentifier],
})
: t('additional_post_box__encrypted_post_pre_file_service', {
encrypted,
sns: SOCIAL_MEDIA_NAME[activatedSiteAdaptorUI.networkIdentifier],
sns: SOCIAL_MEDIA_NAME[activatedSiteAdaptorUI!.networkIdentifier],
})
}
return null
Expand Down
24 changes: 12 additions & 12 deletions packages/mask/src/components/DataSource/useActivatedUI.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,23 +17,23 @@ async function queryPersonaFromDB(identityResolved: IdentityResolved) {

async function queryPersonasFromNextID(identityResolved: IdentityResolved) {
if (!identityResolved.identifier) return
if (!activatedSiteAdaptorUI.configuration.nextIDConfig?.platform) return
if (!activatedSiteAdaptorUI!.configuration.nextIDConfig?.platform) return
return NextIDProof.queryAllExistedBindingsByPlatform(
activatedSiteAdaptorUI.configuration.nextIDConfig?.platform,
activatedSiteAdaptorUI!.configuration.nextIDConfig?.platform,
identityResolved.identifier.userId,
)
}

const CurrentIdentitySubscription: Subscription<ProfileInformation | undefined> = {
getCurrentValue() {
const all = activatedSiteAdaptor_state.profiles.value
const current = (activatedSiteAdaptorUI.collecting.identityProvider?.recognized || defaultIdentityResolved)
const all = activatedSiteAdaptor_state!.profiles.value
const current = (activatedSiteAdaptorUI!.collecting.identityProvider?.recognized || defaultIdentityResolved)
.value.identifier
return all.find((i) => i.identifier === current) || first(all)
},
subscribe(sub) {
const a = activatedSiteAdaptor_state.profiles.addListener(sub)
const b = activatedSiteAdaptorUI.collecting.identityProvider?.recognized.addListener(sub)
const a = activatedSiteAdaptor_state!.profiles.addListener(sub)
const b = activatedSiteAdaptorUI!.collecting.identityProvider?.recognized.addListener(sub)
return () => [a(), b?.()]
},
}
Expand All @@ -51,12 +51,12 @@ export function useCurrentIdentity() {
}

export function useLastRecognizedIdentity() {
return useValueRef(activatedSiteAdaptorUI.collecting.identityProvider?.recognized || defaultIdentityResolved)
return useValueRef(activatedSiteAdaptorUI!.collecting.identityProvider?.recognized || defaultIdentityResolved)
}

export function useCurrentVisitingIdentity() {
return useValueRef(
activatedSiteAdaptorUI.collecting.currentVisitingIdentityProvider?.recognized || defaultIdentityResolved,
activatedSiteAdaptorUI!.collecting.currentVisitingIdentityProvider?.recognized || defaultIdentityResolved,
)
}

Expand Down Expand Up @@ -98,7 +98,7 @@ export function useSocialIdentity(identity: IdentityResolved | null | undefined)
export function useSocialIdentityByUserId(userId?: string) {
const { value: identity } = useAsync(async () => {
if (!userId) return
return activatedSiteAdaptorUI.utils.getUserIdentity?.(userId)
return activatedSiteAdaptorUI!.utils.getUserIdentity?.(userId)
}, [userId])
return useSocialIdentity(identity)
}
Expand All @@ -121,15 +121,15 @@ export function useCurrentVisitingSocialIdentity() {

export function useThemeSettings() {
const themeSettings = useValueRef(
(activatedSiteAdaptorUI.collecting.themeSettingsProvider?.recognized ||
(activatedSiteAdaptorUI!.collecting.themeSettingsProvider?.recognized ||
defaultThemeSettings) as ValueRef<ThemeSettings>,
)
return useMemo<ThemeSettings>(
() => ({
...defaults,
...activatedSiteAdaptorUI.configuration.themeSettings,
...activatedSiteAdaptorUI!.configuration.themeSettings,
...themeSettings,
}),
[activatedSiteAdaptorUI.configuration.themeSettings, themeSettings],
[activatedSiteAdaptorUI!.configuration.themeSettings, themeSettings],
)
}
6 changes: 3 additions & 3 deletions packages/mask/src/components/DataSource/useNextIDVerify.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ import { activatedSiteAdaptorUI } from '../../site-adaptor-infra/index.js'

export function useNextIDVerify() {
const verifyPostCollectTimer = useRef<NodeJS.Timer | null>(null)
const getPostIdFromNewPostToast = activatedSiteAdaptorUI.configuration.nextIDConfig?.getPostIdFromNewPostToast
const postMessage = activatedSiteAdaptorUI.automation?.nativeCompositionDialog?.appendText
const platform = activatedSiteAdaptorUI.configuration.nextIDConfig?.platform
const getPostIdFromNewPostToast = activatedSiteAdaptorUI!.configuration.nextIDConfig?.getPostIdFromNewPostToast
const postMessage = activatedSiteAdaptorUI!.automation?.nativeCompositionDialog?.appendText
const platform = activatedSiteAdaptorUI!.configuration.nextIDConfig?.platform

return useAsyncFn(
async (persona?: PersonaInformation, username?: string, verifiedCallback?: () => void | Promise<void>) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ export function useSearchedKeyword() {
useEffect(() => {
const onLocationChange = () => {
if (!activatedSiteAdaptorUI?.collecting?.getSearchedKeyword) return
const kw = activatedSiteAdaptorUI.collecting.getSearchedKeyword()
const kw = activatedSiteAdaptorUI!.collecting.getSearchedKeyword()
setKeyword(kw)
}
onLocationChange()
Expand Down
2 changes: 1 addition & 1 deletion packages/mask/src/components/GuideStep/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ export default function GuideStep({ total, step, tip, children, arrow = true, on
const childrenRef = useRef<HTMLElement>()
const [clientRect, setClientRect] = useState<Pick<DOMRect, 'width' | 'height' | 'top' | 'left'>>()
const [bottomAvailable, setBottomAvailable] = useState(true)
const { networkIdentifier } = activatedSiteAdaptorUI
const { networkIdentifier } = activatedSiteAdaptorUI!
const currentStep = useValueRef(userGuideStatus[networkIdentifier])
const finished = useValueRef(userGuideFinished[networkIdentifier])
const isCurrentStep = +currentStep === step
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { useValueRef } from '@masknet/shared-base-ui'
import { activatedSiteAdaptorUI } from '../../site-adaptor-infra/index.js'

export function useSetupGuideStatus() {
const context = useValueRef(currentSetupGuideStatus[activatedSiteAdaptorUI.networkIdentifier])
const context = useValueRef(currentSetupGuideStatus[activatedSiteAdaptorUI!.networkIdentifier])
return useMemo<SetupGuideContext>(() => {
try {
return JSON.parse(context)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ export const AdditionalContent = memo(function AdditionalContent(props: Addition
{message ? (
<main className={classes.content}>
<TypedMessageRenderContext
textResizer={activatedSiteAdaptorUI.networkIdentifier !== 'twitter.com'}
textResizer={activatedSiteAdaptorUI!.networkIdentifier !== 'twitter.com'}
renderFragments={activatedSiteAdaptorUI?.customization.componentOverwrite?.RenderFragments}>
<TypedMessageRender message={TypedMessage} />
</TypedMessageRenderContext>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ export interface CommentBoxProps {
inputProps?: Partial<PropsOf<typeof InputBase>>
}
export function CommentBox(props: CommentBoxProps) {
const { classes } = useStyles({ site: activatedSiteAdaptorUI.networkIdentifier })
const { classes } = useStyles({ site: activatedSiteAdaptorUI!.networkIdentifier })
const { t } = useI18N()
return (
<Box sx={{ display: 'flex', width: '100%' }}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ async function makeProgress(
postURL,
authorHint,
currentProfile,
encryptPayloadNetwork: activatedSiteAdaptorUI.encryptPayloadNetwork,
encryptPayloadNetwork: activatedSiteAdaptorUI!.encryptPayloadNetwork,
}
let iv: Uint8Array | undefined
for await (const progress of GeneratorServices.decrypt(payload, context)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ function AppendShareDetail({ recipients, selectedRecipients, onClose, whoAmI, re
iv,
profiles.map((x) => ({ profile: x.identifier, persona: x.linkedPersona })),
whoAmI,
activatedSiteAdaptorUI.encryptPayloadNetwork,
activatedSiteAdaptorUI!.encryptPayloadNetwork,
)
await delay(1500)
retry()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ export function PostReplacer(props: PostReplacerProps) {
return (
<span className={classes.root}>
<TypedMessageRenderContext
textResizer={activatedSiteAdaptorUI.networkIdentifier !== 'twitter.com'}
textResizer={activatedSiteAdaptorUI!.networkIdentifier !== 'twitter.com'}
renderFragments={activatedSiteAdaptorUI?.customization.componentOverwrite?.RenderFragments}
context={initialTransformationContext}>
<Transformer {...props} message={postMessage} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ export function ProfileTab(props: ProfileTabProps) {

const onClick = useCallback(() => {
// Change the url hashtag to trigger `locationchange` event from e.g. 'hostname/medias#web3 => hostname/medias'
isTwitter(activatedSiteAdaptorUI) && location.assign('#' + type)
isTwitter(activatedSiteAdaptorUI!) && location.assign('#' + type)
switchToTab()
}, [switchToTab, type])

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ import Services from '../../extension/service.js'

const useStyles = makeStyles()((theme) => ({
root: {
width: isFacebook(activatedSiteAdaptorUI) ? 876 : 'auto',
width: isFacebook(activatedSiteAdaptorUI!) ? 876 : 'auto',
},
container: {
background:
Expand Down Expand Up @@ -202,7 +202,7 @@ function Content(props: ProfileTabContentProps) {

const isWeb3ProfileDisable = useIsMinimalMode(PluginID.Web3Profile)

const isOnTwitter = isTwitter(activatedSiteAdaptorUI)
const isOnTwitter = isTwitter(activatedSiteAdaptorUI!)
const doesOwnerHaveNoAddress =
isOwnerIdentity && personaStatus.proof?.findIndex((p) => p.platform === NextIDPlatform.Ethereum) === -1

Expand Down

0 comments on commit 707a9b9

Please sign in to comment.