chore(client/ts): port components/mobile_screen_switcher

This commit is contained in:
Elian Doran 2024-12-23 14:21:43 +02:00
parent 68d4f9f507
commit c06dc23ecf
No known key found for this signature in database
2 changed files with 18 additions and 4 deletions

View File

@ -9,7 +9,7 @@ import TabManager from "./tab_manager.js";
import Component from "./component.js";
import keyboardActionsService from "../services/keyboard_actions.js";
import linkService, { ViewScope } from "../services/link.js";
import MobileScreenSwitcherExecutor from "./mobile_screen_switcher.js";
import MobileScreenSwitcherExecutor, { Screen } from "./mobile_screen_switcher.js";
import MainTreeExecutors from "./main_tree_executors.js";
import toast from "../services/toast.js";
import ShortcutComponent from "./shortcut_component.js";
@ -157,6 +157,9 @@ export type CommandMappings = {
moveBranchIdsTo: CommandData & {
branchIds: string[];
};
setActiveScreen: CommandData & {
screen: Screen;
}
}
type EventMappings = {
@ -188,6 +191,11 @@ export type EventListener<T extends EventNames> = {
[key in T as `${key}Event`]: (data: EventData<T>) => void
}
export type CommandListener<T extends CommandNames> = {
[key in T as `${key}Command`]: (data: CommandListenerData<T>) => void
}
export type CommandListenerData<T extends CommandNames> = CommandMappings[T];
export type EventData<T extends EventNames> = EventMappings[T];
type CommandAndEventMappings = (CommandMappings & EventMappings);

View File

@ -1,8 +1,14 @@
import Component from "./component.js";
import appContext from "./app_context.js";
import appContext, { CommandListener, CommandListenerData } from "./app_context.js";
export default class MobileScreenSwitcherExecutor extends Component {
setActiveScreenCommand({screen}) {
export type Screen = "detail" | "tree";
export default class MobileScreenSwitcherExecutor extends Component
implements CommandListener<"setActiveScreen">
{
private activeScreen?: Screen;
setActiveScreenCommand({screen}: CommandListenerData<"setActiveScreen">) {
if (screen !== this.activeScreen) {
this.activeScreen = screen;