mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Reimplement setup for deep linking using runnables instead of non-OCP in index.ts
Co-authored-by: Mikko Aspiala <mikko.aspiala@gmail.com> Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
This commit is contained in:
parent
ca6ab58459
commit
e15be51557
@ -0,0 +1,53 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
|
import { onApplicationIsReadyInjectionToken } from "../on-application-is-ready-injection-token";
|
||||||
|
import { productName } from "../../../../common/vars";
|
||||||
|
import loggerInjectable from "../../../../common/logger.injectable";
|
||||||
|
import electronAppInjectable from "../../../app-paths/get-electron-app-path/electron-app/electron-app.injectable";
|
||||||
|
import lensProtocolRouterMainInjectable from "../../../protocol-handler/lens-protocol-router-main/lens-protocol-router-main.injectable";
|
||||||
|
import exitAppInjectable from "../../../app-paths/get-electron-app-path/electron-app/exit-app.injectable";
|
||||||
|
|
||||||
|
const setupProtocolRouterMainInjectable = getInjectable({
|
||||||
|
id: "setup-protocol-router-main",
|
||||||
|
|
||||||
|
instantiate: (di) => {
|
||||||
|
const logger = di.inject(loggerInjectable);
|
||||||
|
const app = di.inject(electronAppInjectable);
|
||||||
|
const exitApp = di.inject(exitAppInjectable);
|
||||||
|
|
||||||
|
return {
|
||||||
|
run: () => {
|
||||||
|
logger.info(`📟 Setting ${productName} as protocol client for lens://`);
|
||||||
|
|
||||||
|
if (app.setAsDefaultProtocolClient("lens")) {
|
||||||
|
logger.info("📟 Protocol client register succeeded ✅");
|
||||||
|
} else {
|
||||||
|
logger.info("📟 Protocol client register failed ❗");
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.debug("[APP-MAIN] Lens protocol routing main");
|
||||||
|
|
||||||
|
const lensProtocolRouterMain = di.inject(
|
||||||
|
lensProtocolRouterMainInjectable,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!app.requestSingleInstanceLock()) {
|
||||||
|
exitApp();
|
||||||
|
} else {
|
||||||
|
for (const arg of process.argv) {
|
||||||
|
if (arg.toLowerCase().startsWith("lens://")) {
|
||||||
|
lensProtocolRouterMain.route(arg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
injectionToken: onApplicationIsReadyInjectionToken,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default setupProtocolRouterMainInjectable;
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
|
import lensProtocolRouterMainInjectable from "../../../protocol-handler/lens-protocol-router-main/lens-protocol-router-main.injectable";
|
||||||
|
import { onOpenOfUrlInjectionToken } from "../on-open-of-url-injection-token";
|
||||||
|
|
||||||
|
const openUrlUsingProtocolRouterInjectable = getInjectable({
|
||||||
|
id: "open-url-using-protocol-router",
|
||||||
|
|
||||||
|
instantiate: (di) => {
|
||||||
|
const lensProtocolRouterMain = di.inject(lensProtocolRouterMainInjectable);
|
||||||
|
|
||||||
|
return {
|
||||||
|
run: ({ event, url }) => {
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
lensProtocolRouterMain.route(url);
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
injectionToken: onOpenOfUrlInjectionToken,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default openUrlUsingProtocolRouterInjectable;
|
||||||
@ -0,0 +1,37 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
|
import loggerInjectable from "../../../../common/logger.injectable";
|
||||||
|
import lensProtocolRouterMainInjectable from "../../../protocol-handler/lens-protocol-router-main/lens-protocol-router-main.injectable";
|
||||||
|
import windowManagerInjectable from "../../../window-manager.injectable";
|
||||||
|
import { onSecondApplicationInstanceInjectionToken } from "../on-second-application-instance-injection-token";
|
||||||
|
|
||||||
|
const setupProtocolRouterForSecondInstanceInjectable = getInjectable({
|
||||||
|
id: "setup-protocol-router-for-second-instance",
|
||||||
|
|
||||||
|
instantiate: (di) => {
|
||||||
|
const logger = di.inject(loggerInjectable);
|
||||||
|
const lensProtocolRouterMain = di.inject(lensProtocolRouterMainInjectable);
|
||||||
|
const windowManager = di.inject(windowManagerInjectable);
|
||||||
|
|
||||||
|
return {
|
||||||
|
run: async ({ commandLineArguments }) => {
|
||||||
|
logger.debug("second-instance message");
|
||||||
|
|
||||||
|
for (const arg of commandLineArguments) {
|
||||||
|
if (arg.toLowerCase().startsWith("lens://")) {
|
||||||
|
lensProtocolRouterMain.route(arg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await windowManager.ensureMainWindow();
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
injectionToken: onSecondApplicationInstanceInjectionToken,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default setupProtocolRouterForSecondInstanceInjectable;
|
||||||
Loading…
Reference in New Issue
Block a user