mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-27 10:32:58 +02:00
23 lines
746 B
TypeScript
23 lines
746 B
TypeScript
|
import { _ } from '@joplin/lib/locale';
|
||
|
import { Platform } from 'react-native';
|
||
|
|
||
|
const lockToSingleInstance = async () => {
|
||
|
if (Platform.OS !== 'web') return;
|
||
|
|
||
|
const channel = new BroadcastChannel('single-instance-lock');
|
||
|
channel.postMessage('app-opened');
|
||
|
|
||
|
await new Promise<void>((resolve, reject) => {
|
||
|
channel.onmessage = (event) => {
|
||
|
if (event.data === 'app-opened') {
|
||
|
channel.postMessage('already-running');
|
||
|
} else if (event.data === 'already-running') {
|
||
|
alert(_('At present, Joplin Web can only be open in one tab at a time. Please close the other instance of Joplin.'));
|
||
|
reject(new Error(_('Joplin is already running.')));
|
||
|
}
|
||
|
};
|
||
|
setTimeout(() => resolve(), 250);
|
||
|
});
|
||
|
};
|
||
|
export default lockToSingleInstance;
|