mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Cleaning up some IPC types
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
99b1f20d17
commit
a98b3e5705
@ -5,10 +5,6 @@
|
||||
import { getInjectionToken } from "@ogre-tools/injectable";
|
||||
import type { Route } from "./front-end-route-injection-token";
|
||||
|
||||
type InferParametersFrom<TRoute> = TRoute extends Route<infer TParameters>
|
||||
? TParameters
|
||||
: never;
|
||||
|
||||
type RequiredKeys<T> = Exclude<
|
||||
{
|
||||
[K in keyof T]: T extends Record<K, T[K]> ? K : never;
|
||||
@ -30,22 +26,21 @@ type ObjectContainsNoRequired<T> = T extends ObjectContainingNoRequired<T>
|
||||
// - Navigating to route without parameters, with parameters
|
||||
// - Navigating to route with required parameters, without parameters
|
||||
type Parameters<TParameters> = TParameters extends void
|
||||
? {}
|
||||
? { parameters?: never }
|
||||
: ObjectContainsNoRequired<TParameters> extends true
|
||||
? { parameters?: TParameters }
|
||||
: { parameters: TParameters };
|
||||
? { parameters?: TParameters }
|
||||
: { parameters: TParameters };
|
||||
|
||||
export type NavigateToRouteOptions<TRoute> = Parameters<
|
||||
InferParametersFrom<TRoute>
|
||||
> & {
|
||||
export type NavigateToRouteOptions<TParameter> = Parameters<TParameter> & {
|
||||
query?: Record<string, string>;
|
||||
fragment?: string;
|
||||
withoutAffectingBackButton?: boolean;
|
||||
};
|
||||
|
||||
export type NavigateToRoute = <TRoute extends Route<unknown>>(
|
||||
export type NavigateToRoute = <TRoute extends Route<TParameter>, TParameter extends object>(
|
||||
route: TRoute,
|
||||
options?: NavigateToRouteOptions<TRoute>) => void;
|
||||
options?: NavigateToRouteOptions<TParameter>,
|
||||
) => void;
|
||||
|
||||
export const navigateToRouteInjectionToken = getInjectionToken<NavigateToRoute>(
|
||||
{ id: "navigate-to-route-injection-token" },
|
||||
|
||||
@ -13,15 +13,14 @@ const navigateToRouteInjectable = getInjectable({
|
||||
instantiate: (di) => {
|
||||
const navigateToUrl = di.inject(navigateToUrlInjectionToken);
|
||||
|
||||
return async (route, options) => {
|
||||
return (route, options) => {
|
||||
const url = buildURL(route.path, {
|
||||
// TODO: enhance typing
|
||||
params: options?.parameters as any,
|
||||
params: options?.parameters,
|
||||
query: options?.query,
|
||||
fragment: options?.fragment,
|
||||
});
|
||||
|
||||
await navigateToUrl(url, options);
|
||||
navigateToUrl(url, options);
|
||||
};
|
||||
},
|
||||
|
||||
|
||||
@ -33,12 +33,6 @@ export const overrideMessagingFromMainToWindow = (mainDi: DiContainer) => {
|
||||
);
|
||||
}
|
||||
|
||||
if (data.length > 1) {
|
||||
throw new Error(
|
||||
`Tried to send message to channel "${channelId}" with more than one argument which is not supported in MessageChannelListener yet.`,
|
||||
);
|
||||
}
|
||||
|
||||
if (listeners.size === 0) {
|
||||
throw new Error(
|
||||
`Tried to send message to channel "${channelId}" but there where no listeners. Current channels with listeners: "${[
|
||||
@ -47,7 +41,7 @@ export const overrideMessagingFromMainToWindow = (mainDi: DiContainer) => {
|
||||
);
|
||||
}
|
||||
|
||||
listeners.forEach((listener) => listener.handler(data[0]));
|
||||
listeners.forEach((listener) => listener.handler(data));
|
||||
},
|
||||
);
|
||||
|
||||
|
||||
@ -4,14 +4,14 @@
|
||||
*/
|
||||
import type { DiContainer } from "@ogre-tools/injectable";
|
||||
import type { RequestChannel } from "../../common/utils/channel/request-channel-injection-token";
|
||||
import type { RequestChannelHandlerDescriptor } from "../../common/utils/channel/request-channel-listener-injection-token";
|
||||
import type { RequestChannelHandler } from "../../common/utils/channel/request-channel-listener-injection-token";
|
||||
import enlistRequestChannelListenerInjectableInMain from "../../main/utils/channel/channel-listeners/enlist-request-channel-listener.injectable";
|
||||
import requestFromChannelInjectable from "../../renderer/utils/channel/request-from-channel.injectable";
|
||||
|
||||
export const overrideRequestingFromWindowToMain = (mainDi: DiContainer) => {
|
||||
const requestChannelListenerFakesForMain = new Map<
|
||||
string,
|
||||
RequestChannelHandlerDescriptor<RequestChannel<any, any>>
|
||||
RequestChannelHandler<RequestChannel<any, any>>
|
||||
>();
|
||||
|
||||
mainDi.override(
|
||||
@ -24,14 +24,7 @@ export const overrideRequestingFromWindowToMain = (mainDi: DiContainer) => {
|
||||
);
|
||||
}
|
||||
|
||||
requestChannelListenerFakesForMain.set(
|
||||
listener.channel.id,
|
||||
|
||||
// TODO: Figure out typing
|
||||
listener as unknown as RequestChannelHandlerDescriptor<
|
||||
RequestChannel<any, any>
|
||||
>,
|
||||
);
|
||||
requestChannelListenerFakesForMain.set(listener.channel.id, listener);
|
||||
|
||||
return () => {
|
||||
requestChannelListenerFakesForMain.delete(listener.channel.id);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user