mirror of
https://github.com/turt2live/matrix-dimension.git
synced 2024-09-19 23:35:53 +00:00
64 lines
2.3 KiB
TypeScript
64 lines
2.3 KiB
TypeScript
import { Component } from "@angular/core";
|
|
import { ToasterService } from "angular2-toaster";
|
|
import { DialogRef, ModalComponent } from "ngx-modialog";
|
|
import { BSModalContext } from "ngx-modialog/plugins/bootstrap";
|
|
import { FE_IrcBridge } from "../../../../shared/models/irc";
|
|
import { AdminIrcApiService } from "../../../../shared/services/admin/admin-irc-api.service";
|
|
|
|
export class IrcNetworksDialogContext extends BSModalContext {
|
|
public bridge: FE_IrcBridge;
|
|
}
|
|
|
|
interface LocalNetwork {
|
|
id: string;
|
|
name: string;
|
|
domain: string;
|
|
bridgeUserId: string;
|
|
isEnabled: boolean;
|
|
}
|
|
|
|
@Component({
|
|
templateUrl: "./networks.component.html",
|
|
styleUrls: ["./networks.component.scss"],
|
|
})
|
|
export class AdminIrcBridgeNetworksComponent implements ModalComponent<IrcNetworksDialogContext> {
|
|
|
|
public isUpdating = false;
|
|
public bridge: FE_IrcBridge;
|
|
public networks: LocalNetwork[];
|
|
|
|
constructor(public dialog: DialogRef<IrcNetworksDialogContext>,
|
|
private ircApi: AdminIrcApiService,
|
|
private toaster: ToasterService) {
|
|
this.bridge = dialog.context.bridge;
|
|
|
|
const networkIds = Object.keys(this.bridge.availableNetworks);
|
|
this.networks = networkIds.map(i => {
|
|
return {
|
|
id: i,
|
|
name: this.bridge.availableNetworks[i].name,
|
|
domain: this.bridge.availableNetworks[i].domain,
|
|
bridgeUserId: this.bridge.availableNetworks[i].bridgeUserId,
|
|
isEnabled: this.bridge.availableNetworks[i].isEnabled,
|
|
};
|
|
});
|
|
}
|
|
|
|
public toggleNetwork(network: LocalNetwork) {
|
|
network.isEnabled = !network.isEnabled;
|
|
this.bridge.availableNetworks[network.id].isEnabled = network.isEnabled;
|
|
|
|
this.isUpdating = true;
|
|
this.ircApi.setNetworkEnabled(this.bridge.id, network.id, network.isEnabled).then(() => {
|
|
this.isUpdating = false;
|
|
this.toaster.pop("success", "Network " + (network.isEnabled ? "enabled" : "disabled"));
|
|
}).catch(err => {
|
|
console.error(err);
|
|
this.isUpdating = false;
|
|
network.isEnabled = !network.isEnabled;
|
|
this.bridge.availableNetworks[network.id].isEnabled = network.isEnabled;
|
|
this.toaster.pop("error", "Failed to update network");
|
|
});
|
|
}
|
|
}
|