Mac: Fix signal link handling when app is not open

Co-authored-by: ayumi-signal <143036029+ayumi-signal@users.noreply.github.com>
This commit is contained in:
automated-signal 2024-07-12 09:59:08 -05:00 committed by GitHub
parent 2633776aaa
commit 72a14ba9ac
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -179,6 +179,8 @@ nativeThemeNotifier.initialize();
let appStartInitialSpellcheckSetting = true; let appStartInitialSpellcheckSetting = true;
let macInitialOpenUrlRoute: ParsedSignalRoute | undefined;
const cliParser = createParser({ const cliParser = createParser({
allowUnknown: true, allowUnknown: true,
options: [ options: [
@ -281,10 +283,19 @@ if (!process.mas) {
return true; return true;
}); });
// This event is received in macOS packaged builds.
app.on('open-url', (event, incomingHref) => { app.on('open-url', (event, incomingHref) => {
event.preventDefault(); event.preventDefault();
const route = parseSignalRoute(incomingHref); const route = parseSignalRoute(incomingHref);
if (route != null) { if (route != null) {
// When the app isn't open and you click a signal link to open the app, then
// this event will emit before mainWindow is ready. We save the value for later.
if (mainWindow == null || !mainWindow.webContents) {
macInitialOpenUrlRoute = route;
return;
}
handleSignalRoute(route); handleSignalRoute(route);
} }
}); });
@ -1083,12 +1094,17 @@ async function readyForUpdates() {
isReadyForUpdates = true; isReadyForUpdates = true;
// First, install requested sticker pack // First, handle requested signal URLs
const incomingHref = maybeGetIncomingSignalRoute(process.argv); const incomingHref = maybeGetIncomingSignalRoute(process.argv);
if (incomingHref) { if (incomingHref) {
handleSignalRoute(incomingHref); handleSignalRoute(incomingHref);
} else if (macInitialOpenUrlRoute) {
handleSignalRoute(macInitialOpenUrlRoute);
} }
// Discard value even if we don't handle a saved URL.
macInitialOpenUrlRoute = undefined;
// Second, start checking for app updates // Second, start checking for app updates
try { try {
strictAssert( strictAssert(