Fix join group modal

This commit is contained in:
Jamie Kyle 2025-04-15 13:01:17 -07:00 committed by GitHub
commit ecb19d5a10
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 110 additions and 61 deletions

View file

@ -70,6 +70,26 @@ export const FunEmojiLocalizationProvider = memo(
}
);
export type FunEmptyEmojiLocalizationProviderProps = Readonly<{
children: ReactNode;
}>;
export function FunDefaultEnglishEmojiLocalizationProvider(
props: FunEmptyEmojiLocalizationProviderProps
): JSX.Element {
const context = useMemo(() => {
return {
emojiSearchIndex: getEmojiDefaultEnglishSearchIndex(),
emojiLocalizerIndex: getEmojiDefaultEnglishLocalizerIndex(),
};
}, []);
return (
<FunEmojiLocalizationContext.Provider value={context}>
{props.children}
</FunEmojiLocalizationContext.Provider>
);
}
function useLocaleEmojiList(i18n: LocalizerType): LocaleEmojiListType | null {
const locale = useMemo(() => i18n.getLocale(), [i18n]);

View file

@ -6,10 +6,13 @@ import { render } from 'react-dom';
import { ClearingData } from '../components/ClearingData';
import { deleteAllData } from './deleteAllData';
import { FunDefaultEnglishEmojiLocalizationProvider } from '../components/fun/FunEmojiLocalizationProvider';
export function renderClearingDataView(): void {
render(
<ClearingData deleteAllData={deleteAllData} i18n={window.i18n} />,
<FunDefaultEnglishEmojiLocalizationProvider>
<ClearingData deleteAllData={deleteAllData} i18n={window.i18n} />
</FunDefaultEnglishEmojiLocalizationProvider>,
document.getElementById('app-container')
);
}

View file

@ -11,6 +11,7 @@ import type { Store } from 'redux';
import { ModalHost } from '../../components/ModalHost';
import type { SmartGroupV2JoinDialogProps } from '../smart/GroupV2JoinDialog';
import { SmartGroupV2JoinDialog } from '../smart/GroupV2JoinDialog';
import { FunEmojiLocalizationProvider } from '../../components/fun/FunEmojiLocalizationProvider';
export const createGroupV2JoinModal = (
store: Store,
@ -20,9 +21,11 @@ export const createGroupV2JoinModal = (
return (
<Provider store={store}>
<FunEmojiLocalizationProvider i18n={window.i18n}>
<ModalHost modalName="createGroupV2JoinModal" onClose={onClose}>
<SmartGroupV2JoinDialog {...props} />
</ModalHost>
</FunEmojiLocalizationProvider>
</Provider>
);
};

View file

@ -9,6 +9,7 @@ import * as log from '../logging/log';
import { ProgressModal } from '../components/ProgressModal';
import { clearTimeoutIfNecessary } from './clearTimeoutIfNecessary';
import { sleep } from './sleep';
import { FunDefaultEnglishEmojiLocalizationProvider } from '../components/fun/FunEmojiLocalizationProvider';
export async function longRunningTaskWrapper<T>({
name,
@ -31,7 +32,12 @@ export async function longRunningTaskWrapper<T>({
progressNode = document.createElement('div');
log.info(`longRunningTaskWrapper/${idLog}: Creating spinner`);
render(<ProgressModal i18n={window.i18n} />, progressNode);
render(
<FunDefaultEnglishEmojiLocalizationProvider>
<ProgressModal i18n={window.i18n} />
</FunDefaultEnglishEmojiLocalizationProvider>,
progressNode
);
spinnerStart = Date.now();
}, TWO_SECONDS);

View file

@ -4,6 +4,7 @@
import React from 'react';
import { render, unmountComponentAtNode } from 'react-dom';
import { ConfirmationDialog } from '../components/ConfirmationDialog';
import { FunDefaultEnglishEmojiLocalizationProvider } from '../components/fun/FunEmojiLocalizationProvider';
type ConfirmationDialogViewProps = {
onTopOfEverything?: boolean;
@ -55,6 +56,7 @@ export function showConfirmationDialog(
confirmationDialogPreviousFocus = document.activeElement as HTMLElement;
render(
<FunDefaultEnglishEmojiLocalizationProvider>
<ConfirmationDialog
dialogName={options.dialogName}
onTopOfEverything={options.onTopOfEverything}
@ -71,7 +73,9 @@ export function showConfirmationDialog(
i18n={window.i18n}
onCancel={() => {
if (options.reject) {
options.reject(new Error('showConfirmationDialog: onCancel called'));
options.reject(
new Error('showConfirmationDialog: onCancel called')
);
}
}}
onClose={() => {
@ -81,7 +85,8 @@ export function showConfirmationDialog(
noMouseClose={options.noMouseClose}
>
{options.description}
</ConfirmationDialog>,
</ConfirmationDialog>
</FunDefaultEnglishEmojiLocalizationProvider>,
confirmationDialogViewNode
);
}

View file

@ -7,12 +7,14 @@ import ReactDOM from 'react-dom';
import { About } from '../../components/About';
import { i18n } from '../sandboxedInit';
import { strictAssert } from '../../util/assert';
import { FunDefaultEnglishEmojiLocalizationProvider } from '../../components/fun/FunEmojiLocalizationProvider';
const { AboutWindowProps } = window.Signal;
strictAssert(AboutWindowProps, 'window values not provided');
ReactDOM.render(
<FunDefaultEnglishEmojiLocalizationProvider>
<About
closeAbout={() => window.SignalContext.executeMenuRole('close')}
appEnv={AboutWindowProps.appEnv}
@ -20,6 +22,7 @@ ReactDOM.render(
arch={AboutWindowProps.arch}
i18n={i18n}
version={window.SignalContext.getVersion()}
/>,
/>
</FunDefaultEnglishEmojiLocalizationProvider>,
document.getElementById('app')
);

View file

@ -4,6 +4,7 @@
import React from 'react';
import { render } from 'react-dom';
import { DebugLogWindow } from '../../components/DebugLogWindow';
import { FunDefaultEnglishEmojiLocalizationProvider } from '../../components/fun/FunEmojiLocalizationProvider';
import { i18n } from '../sandboxedInit';
import { strictAssert } from '../../util/assert';
@ -12,12 +13,14 @@ const { DebugLogWindowProps } = window.Signal;
strictAssert(DebugLogWindowProps, 'window values not provided');
render(
<FunDefaultEnglishEmojiLocalizationProvider>
<DebugLogWindow
closeWindow={() => window.SignalContext.executeMenuRole('close')}
downloadLog={DebugLogWindowProps.downloadLog}
i18n={i18n}
fetchLogs={DebugLogWindowProps.fetchLogs}
uploadLogs={DebugLogWindowProps.uploadLogs}
/>,
/>
</FunDefaultEnglishEmojiLocalizationProvider>,
document.getElementById('app')
);

View file

@ -7,6 +7,7 @@ import ReactDOM from 'react-dom';
import { PermissionsPopup } from '../../components/PermissionsPopup';
import { i18n } from '../sandboxedInit';
import { strictAssert } from '../../util/assert';
import { FunDefaultEnglishEmojiLocalizationProvider } from '../../components/fun/FunEmojiLocalizationProvider';
const { PermissionsWindowProps } = window.Signal;
@ -26,11 +27,13 @@ if (forCalling) {
}
ReactDOM.render(
<FunDefaultEnglishEmojiLocalizationProvider>
<PermissionsPopup
i18n={i18n}
message={message}
onAccept={PermissionsWindowProps.onAccept}
onClose={PermissionsWindowProps.onClose}
/>,
/>
</FunDefaultEnglishEmojiLocalizationProvider>,
document.getElementById('app')
);

View file

@ -9,6 +9,7 @@ import { i18n } from '../sandboxedInit';
import { strictAssert } from '../../util/assert';
import { drop } from '../../util/drop';
import { parseEnvironment, setEnvironment } from '../../environment';
import { FunDefaultEnglishEmojiLocalizationProvider } from '../../components/fun/FunEmojiLocalizationProvider';
const { ScreenShareWindowProps } = window.Signal;
@ -28,6 +29,7 @@ function render() {
strictAssert(ScreenShareWindowProps, 'window values not provided');
ReactDOM.render(
<FunDefaultEnglishEmojiLocalizationProvider>
<div className="App dark-theme">
<CallingScreenSharingController
i18n={i18n}
@ -36,7 +38,8 @@ function render() {
status={ScreenShareWindowProps.getStatus()}
presentedSourceName={ScreenShareWindowProps.presentedSourceName}
/>
</div>,
</div>
</FunDefaultEnglishEmojiLocalizationProvider>,
document.getElementById('app')
);