Fix join group modal
This commit is contained in:
parent
88a2f6f92e
commit
ecb19d5a10
9 changed files with 110 additions and 61 deletions
|
@ -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 {
|
function useLocaleEmojiList(i18n: LocalizerType): LocaleEmojiListType | null {
|
||||||
const locale = useMemo(() => i18n.getLocale(), [i18n]);
|
const locale = useMemo(() => i18n.getLocale(), [i18n]);
|
||||||
|
|
||||||
|
|
|
@ -6,10 +6,13 @@ import { render } from 'react-dom';
|
||||||
|
|
||||||
import { ClearingData } from '../components/ClearingData';
|
import { ClearingData } from '../components/ClearingData';
|
||||||
import { deleteAllData } from './deleteAllData';
|
import { deleteAllData } from './deleteAllData';
|
||||||
|
import { FunDefaultEnglishEmojiLocalizationProvider } from '../components/fun/FunEmojiLocalizationProvider';
|
||||||
|
|
||||||
export function renderClearingDataView(): void {
|
export function renderClearingDataView(): void {
|
||||||
render(
|
render(
|
||||||
<ClearingData deleteAllData={deleteAllData} i18n={window.i18n} />,
|
<FunDefaultEnglishEmojiLocalizationProvider>
|
||||||
|
<ClearingData deleteAllData={deleteAllData} i18n={window.i18n} />
|
||||||
|
</FunDefaultEnglishEmojiLocalizationProvider>,
|
||||||
document.getElementById('app-container')
|
document.getElementById('app-container')
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@ import type { Store } from 'redux';
|
||||||
import { ModalHost } from '../../components/ModalHost';
|
import { ModalHost } from '../../components/ModalHost';
|
||||||
import type { SmartGroupV2JoinDialogProps } from '../smart/GroupV2JoinDialog';
|
import type { SmartGroupV2JoinDialogProps } from '../smart/GroupV2JoinDialog';
|
||||||
import { SmartGroupV2JoinDialog } from '../smart/GroupV2JoinDialog';
|
import { SmartGroupV2JoinDialog } from '../smart/GroupV2JoinDialog';
|
||||||
|
import { FunEmojiLocalizationProvider } from '../../components/fun/FunEmojiLocalizationProvider';
|
||||||
|
|
||||||
export const createGroupV2JoinModal = (
|
export const createGroupV2JoinModal = (
|
||||||
store: Store,
|
store: Store,
|
||||||
|
@ -20,9 +21,11 @@ export const createGroupV2JoinModal = (
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Provider store={store}>
|
<Provider store={store}>
|
||||||
<ModalHost modalName="createGroupV2JoinModal" onClose={onClose}>
|
<FunEmojiLocalizationProvider i18n={window.i18n}>
|
||||||
<SmartGroupV2JoinDialog {...props} />
|
<ModalHost modalName="createGroupV2JoinModal" onClose={onClose}>
|
||||||
</ModalHost>
|
<SmartGroupV2JoinDialog {...props} />
|
||||||
|
</ModalHost>
|
||||||
|
</FunEmojiLocalizationProvider>
|
||||||
</Provider>
|
</Provider>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -9,6 +9,7 @@ import * as log from '../logging/log';
|
||||||
import { ProgressModal } from '../components/ProgressModal';
|
import { ProgressModal } from '../components/ProgressModal';
|
||||||
import { clearTimeoutIfNecessary } from './clearTimeoutIfNecessary';
|
import { clearTimeoutIfNecessary } from './clearTimeoutIfNecessary';
|
||||||
import { sleep } from './sleep';
|
import { sleep } from './sleep';
|
||||||
|
import { FunDefaultEnglishEmojiLocalizationProvider } from '../components/fun/FunEmojiLocalizationProvider';
|
||||||
|
|
||||||
export async function longRunningTaskWrapper<T>({
|
export async function longRunningTaskWrapper<T>({
|
||||||
name,
|
name,
|
||||||
|
@ -31,7 +32,12 @@ export async function longRunningTaskWrapper<T>({
|
||||||
progressNode = document.createElement('div');
|
progressNode = document.createElement('div');
|
||||||
|
|
||||||
log.info(`longRunningTaskWrapper/${idLog}: Creating spinner`);
|
log.info(`longRunningTaskWrapper/${idLog}: Creating spinner`);
|
||||||
render(<ProgressModal i18n={window.i18n} />, progressNode);
|
render(
|
||||||
|
<FunDefaultEnglishEmojiLocalizationProvider>
|
||||||
|
<ProgressModal i18n={window.i18n} />
|
||||||
|
</FunDefaultEnglishEmojiLocalizationProvider>,
|
||||||
|
progressNode
|
||||||
|
);
|
||||||
spinnerStart = Date.now();
|
spinnerStart = Date.now();
|
||||||
}, TWO_SECONDS);
|
}, TWO_SECONDS);
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { render, unmountComponentAtNode } from 'react-dom';
|
import { render, unmountComponentAtNode } from 'react-dom';
|
||||||
import { ConfirmationDialog } from '../components/ConfirmationDialog';
|
import { ConfirmationDialog } from '../components/ConfirmationDialog';
|
||||||
|
import { FunDefaultEnglishEmojiLocalizationProvider } from '../components/fun/FunEmojiLocalizationProvider';
|
||||||
|
|
||||||
type ConfirmationDialogViewProps = {
|
type ConfirmationDialogViewProps = {
|
||||||
onTopOfEverything?: boolean;
|
onTopOfEverything?: boolean;
|
||||||
|
@ -55,33 +56,37 @@ export function showConfirmationDialog(
|
||||||
confirmationDialogPreviousFocus = document.activeElement as HTMLElement;
|
confirmationDialogPreviousFocus = document.activeElement as HTMLElement;
|
||||||
|
|
||||||
render(
|
render(
|
||||||
<ConfirmationDialog
|
<FunDefaultEnglishEmojiLocalizationProvider>
|
||||||
dialogName={options.dialogName}
|
<ConfirmationDialog
|
||||||
onTopOfEverything={options.onTopOfEverything}
|
dialogName={options.dialogName}
|
||||||
actions={[
|
onTopOfEverything={options.onTopOfEverything}
|
||||||
{
|
actions={[
|
||||||
action: () => {
|
{
|
||||||
options.resolve();
|
action: () => {
|
||||||
|
options.resolve();
|
||||||
|
},
|
||||||
|
style: options.confirmStyle,
|
||||||
|
text: options.okText || window.i18n('icu:ok'),
|
||||||
},
|
},
|
||||||
style: options.confirmStyle,
|
]}
|
||||||
text: options.okText || window.i18n('icu:ok'),
|
cancelText={options.cancelText || window.i18n('icu:cancel')}
|
||||||
},
|
i18n={window.i18n}
|
||||||
]}
|
onCancel={() => {
|
||||||
cancelText={options.cancelText || window.i18n('icu:cancel')}
|
if (options.reject) {
|
||||||
i18n={window.i18n}
|
options.reject(
|
||||||
onCancel={() => {
|
new Error('showConfirmationDialog: onCancel called')
|
||||||
if (options.reject) {
|
);
|
||||||
options.reject(new Error('showConfirmationDialog: onCancel called'));
|
}
|
||||||
}
|
}}
|
||||||
}}
|
onClose={() => {
|
||||||
onClose={() => {
|
removeConfirmationDialog();
|
||||||
removeConfirmationDialog();
|
}}
|
||||||
}}
|
title={options.title}
|
||||||
title={options.title}
|
noMouseClose={options.noMouseClose}
|
||||||
noMouseClose={options.noMouseClose}
|
>
|
||||||
>
|
{options.description}
|
||||||
{options.description}
|
</ConfirmationDialog>
|
||||||
</ConfirmationDialog>,
|
</FunDefaultEnglishEmojiLocalizationProvider>,
|
||||||
confirmationDialogViewNode
|
confirmationDialogViewNode
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,19 +7,22 @@ import ReactDOM from 'react-dom';
|
||||||
import { About } from '../../components/About';
|
import { About } from '../../components/About';
|
||||||
import { i18n } from '../sandboxedInit';
|
import { i18n } from '../sandboxedInit';
|
||||||
import { strictAssert } from '../../util/assert';
|
import { strictAssert } from '../../util/assert';
|
||||||
|
import { FunDefaultEnglishEmojiLocalizationProvider } from '../../components/fun/FunEmojiLocalizationProvider';
|
||||||
|
|
||||||
const { AboutWindowProps } = window.Signal;
|
const { AboutWindowProps } = window.Signal;
|
||||||
|
|
||||||
strictAssert(AboutWindowProps, 'window values not provided');
|
strictAssert(AboutWindowProps, 'window values not provided');
|
||||||
|
|
||||||
ReactDOM.render(
|
ReactDOM.render(
|
||||||
<About
|
<FunDefaultEnglishEmojiLocalizationProvider>
|
||||||
closeAbout={() => window.SignalContext.executeMenuRole('close')}
|
<About
|
||||||
appEnv={AboutWindowProps.appEnv}
|
closeAbout={() => window.SignalContext.executeMenuRole('close')}
|
||||||
platform={AboutWindowProps.platform}
|
appEnv={AboutWindowProps.appEnv}
|
||||||
arch={AboutWindowProps.arch}
|
platform={AboutWindowProps.platform}
|
||||||
i18n={i18n}
|
arch={AboutWindowProps.arch}
|
||||||
version={window.SignalContext.getVersion()}
|
i18n={i18n}
|
||||||
/>,
|
version={window.SignalContext.getVersion()}
|
||||||
|
/>
|
||||||
|
</FunDefaultEnglishEmojiLocalizationProvider>,
|
||||||
document.getElementById('app')
|
document.getElementById('app')
|
||||||
);
|
);
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { render } from 'react-dom';
|
import { render } from 'react-dom';
|
||||||
import { DebugLogWindow } from '../../components/DebugLogWindow';
|
import { DebugLogWindow } from '../../components/DebugLogWindow';
|
||||||
|
import { FunDefaultEnglishEmojiLocalizationProvider } from '../../components/fun/FunEmojiLocalizationProvider';
|
||||||
import { i18n } from '../sandboxedInit';
|
import { i18n } from '../sandboxedInit';
|
||||||
import { strictAssert } from '../../util/assert';
|
import { strictAssert } from '../../util/assert';
|
||||||
|
|
||||||
|
@ -12,12 +13,14 @@ const { DebugLogWindowProps } = window.Signal;
|
||||||
strictAssert(DebugLogWindowProps, 'window values not provided');
|
strictAssert(DebugLogWindowProps, 'window values not provided');
|
||||||
|
|
||||||
render(
|
render(
|
||||||
<DebugLogWindow
|
<FunDefaultEnglishEmojiLocalizationProvider>
|
||||||
closeWindow={() => window.SignalContext.executeMenuRole('close')}
|
<DebugLogWindow
|
||||||
downloadLog={DebugLogWindowProps.downloadLog}
|
closeWindow={() => window.SignalContext.executeMenuRole('close')}
|
||||||
i18n={i18n}
|
downloadLog={DebugLogWindowProps.downloadLog}
|
||||||
fetchLogs={DebugLogWindowProps.fetchLogs}
|
i18n={i18n}
|
||||||
uploadLogs={DebugLogWindowProps.uploadLogs}
|
fetchLogs={DebugLogWindowProps.fetchLogs}
|
||||||
/>,
|
uploadLogs={DebugLogWindowProps.uploadLogs}
|
||||||
|
/>
|
||||||
|
</FunDefaultEnglishEmojiLocalizationProvider>,
|
||||||
document.getElementById('app')
|
document.getElementById('app')
|
||||||
);
|
);
|
||||||
|
|
|
@ -7,6 +7,7 @@ import ReactDOM from 'react-dom';
|
||||||
import { PermissionsPopup } from '../../components/PermissionsPopup';
|
import { PermissionsPopup } from '../../components/PermissionsPopup';
|
||||||
import { i18n } from '../sandboxedInit';
|
import { i18n } from '../sandboxedInit';
|
||||||
import { strictAssert } from '../../util/assert';
|
import { strictAssert } from '../../util/assert';
|
||||||
|
import { FunDefaultEnglishEmojiLocalizationProvider } from '../../components/fun/FunEmojiLocalizationProvider';
|
||||||
|
|
||||||
const { PermissionsWindowProps } = window.Signal;
|
const { PermissionsWindowProps } = window.Signal;
|
||||||
|
|
||||||
|
@ -26,11 +27,13 @@ if (forCalling) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ReactDOM.render(
|
ReactDOM.render(
|
||||||
<PermissionsPopup
|
<FunDefaultEnglishEmojiLocalizationProvider>
|
||||||
i18n={i18n}
|
<PermissionsPopup
|
||||||
message={message}
|
i18n={i18n}
|
||||||
onAccept={PermissionsWindowProps.onAccept}
|
message={message}
|
||||||
onClose={PermissionsWindowProps.onClose}
|
onAccept={PermissionsWindowProps.onAccept}
|
||||||
/>,
|
onClose={PermissionsWindowProps.onClose}
|
||||||
|
/>
|
||||||
|
</FunDefaultEnglishEmojiLocalizationProvider>,
|
||||||
document.getElementById('app')
|
document.getElementById('app')
|
||||||
);
|
);
|
||||||
|
|
|
@ -9,6 +9,7 @@ import { i18n } from '../sandboxedInit';
|
||||||
import { strictAssert } from '../../util/assert';
|
import { strictAssert } from '../../util/assert';
|
||||||
import { drop } from '../../util/drop';
|
import { drop } from '../../util/drop';
|
||||||
import { parseEnvironment, setEnvironment } from '../../environment';
|
import { parseEnvironment, setEnvironment } from '../../environment';
|
||||||
|
import { FunDefaultEnglishEmojiLocalizationProvider } from '../../components/fun/FunEmojiLocalizationProvider';
|
||||||
|
|
||||||
const { ScreenShareWindowProps } = window.Signal;
|
const { ScreenShareWindowProps } = window.Signal;
|
||||||
|
|
||||||
|
@ -28,15 +29,17 @@ function render() {
|
||||||
strictAssert(ScreenShareWindowProps, 'window values not provided');
|
strictAssert(ScreenShareWindowProps, 'window values not provided');
|
||||||
|
|
||||||
ReactDOM.render(
|
ReactDOM.render(
|
||||||
<div className="App dark-theme">
|
<FunDefaultEnglishEmojiLocalizationProvider>
|
||||||
<CallingScreenSharingController
|
<div className="App dark-theme">
|
||||||
i18n={i18n}
|
<CallingScreenSharingController
|
||||||
onCloseController={onCloseController}
|
i18n={i18n}
|
||||||
onStopSharing={ScreenShareWindowProps.onStopSharing}
|
onCloseController={onCloseController}
|
||||||
status={ScreenShareWindowProps.getStatus()}
|
onStopSharing={ScreenShareWindowProps.onStopSharing}
|
||||||
presentedSourceName={ScreenShareWindowProps.presentedSourceName}
|
status={ScreenShareWindowProps.getStatus()}
|
||||||
/>
|
presentedSourceName={ScreenShareWindowProps.presentedSourceName}
|
||||||
</div>,
|
/>
|
||||||
|
</div>
|
||||||
|
</FunDefaultEnglishEmojiLocalizationProvider>,
|
||||||
|
|
||||||
document.getElementById('app')
|
document.getElementById('app')
|
||||||
);
|
);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue