Initial move

This commit is contained in:
2024-09-03 14:50:33 +02:00
parent adb6be0006
commit 9fa656ed5e
138 changed files with 13117 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
import { Button } from "../ui";
import { Dialog } from "../ui/dialog";
import { API } from "../api";
import { Dropdown } from "../ui/dropdown";
import { state } from "../state";
import { showToast } from "../speech";
export class MergeDialog extends Dialog<boolean> {
private channelList: Dropdown;
private mergeButton: Button;
protected cancelButton: Button;
public constructor() {
super("Merge channels", false);
this.channelList = new Dropdown("Target channel", []);
this.channelList.setPosition(10, 10, 80, 20);
this.mergeButton = new Button("Merge");
this.mergeButton.setPosition(30, 30, 40, 30);
this.mergeButton.onClick(() => this.merge());
this.cancelButton = new Button("Cancel");
this.cancelButton.setPosition(30, 70, 40, 30);
this.cancelButton.onClick(() => this.cancel());
this.add(this.channelList);
this.add(this.mergeButton);
this.add(this.cancelButton);
this.setupChannelList();
}
private setupChannelList() {
this.channelList.clearOptions();
state.channelList.getChannels().forEach((channel) => {
if (channel.id !== state.currentChannel!.id) this.channelList.addOption(channel.id.toString(), channel.name);
})
}
private async merge() {
const currentChannel = state.currentChannel;
const target = this.channelList.getSelectedValue();
const targetChannel = state.getChannelById(parseInt(target));
console.log(currentChannel, targetChannel);
if (!targetChannel || !currentChannel) this.cancel();
try {
const res = await API.mergeChannels(currentChannel!.id.toString(), target);
currentChannel!.messages = [];
showToast("Channels were merged.");
this.choose(true);
} catch (e) {
showToast("Failed to merge channels: " + e);
this.choose(false);
}
}
}