Deep-link hooked to our protocol handler
Summary: This hooks the PWA deep-link to our existing deep-link url handler. Reviewed By: antonk52 Differential Revision: D48598886 fbshipit-source-id: 8da9b7bc89bebdafc2bd4c0dc0bd7608864e0254
This commit is contained in:
committed by
Facebook GitHub Bot
parent
aa327b1a46
commit
c0347ec830
@@ -16,6 +16,9 @@ if (loadingContainer) {
|
|||||||
loadingContainer.innerText = 'Loading...';
|
loadingContainer.innerText = 'Loading...';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let cachedFile: {name: string; data: string} | undefined;
|
||||||
|
let cachedDeepLinkURL: string | undefined;
|
||||||
|
|
||||||
async function start() {
|
async function start() {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
electronRequire = function (path: string) {
|
electronRequire = function (path: string) {
|
||||||
@@ -49,12 +52,10 @@ async function start() {
|
|||||||
const maybeParams = removePrefix(url.pathname, '/');
|
const maybeParams = removePrefix(url.pathname, '/');
|
||||||
const params = new URLSearchParams(maybeParams);
|
const params = new URLSearchParams(maybeParams);
|
||||||
|
|
||||||
const queryParamsObject: any = {};
|
const deeplinkURL = new URL('flipper://open-plugin');
|
||||||
params.forEach((value, key) => {
|
deeplinkURL.search = params.toString();
|
||||||
queryParamsObject[key] = value;
|
|
||||||
});
|
|
||||||
|
|
||||||
console.log(JSON.stringify(queryParamsObject));
|
cachedDeepLinkURL = deeplinkURL.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
const searchParams = new URLSearchParams({token: token ?? ''});
|
const searchParams = new URLSearchParams({token: token ?? ''});
|
||||||
@@ -113,7 +114,6 @@ start().catch((e) => {
|
|||||||
async function initializePWA() {
|
async function initializePWA() {
|
||||||
console.log('[PWA] Initialization');
|
console.log('[PWA] Initialization');
|
||||||
|
|
||||||
let cachedFile: {name: string; data: string} | undefined;
|
|
||||||
let rehydrated = false;
|
let rehydrated = false;
|
||||||
const openFileIfAny = () => {
|
const openFileIfAny = () => {
|
||||||
if (!cachedFile || !rehydrated) {
|
if (!cachedFile || !rehydrated) {
|
||||||
@@ -127,6 +127,18 @@ async function initializePWA() {
|
|||||||
cachedFile = undefined;
|
cachedFile = undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const openURLIfAny = () => {
|
||||||
|
if (!cachedDeepLinkURL || !rehydrated) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
window.dispatchEvent(
|
||||||
|
new CustomEvent('flipper-protocol-handler', {
|
||||||
|
detail: [cachedDeepLinkURL],
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
cachedDeepLinkURL = undefined;
|
||||||
|
};
|
||||||
|
|
||||||
if ('serviceWorker' in navigator) {
|
if ('serviceWorker' in navigator) {
|
||||||
navigator.serviceWorker
|
navigator.serviceWorker
|
||||||
.register('/service-worker.js')
|
.register('/service-worker.js')
|
||||||
@@ -177,6 +189,7 @@ async function initializePWA() {
|
|||||||
console.info('[PWA] Store is rehydrated');
|
console.info('[PWA] Store is rehydrated');
|
||||||
rehydrated = true;
|
rehydrated = true;
|
||||||
openFileIfAny();
|
openFileIfAny();
|
||||||
|
openURLIfAny();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user