mirror of
https://github.com/bitwarden/directory-connector
synced 2025-12-05 23:53:21 +00:00
* Unpackage-ify jslib * Adjust .tsconfig path for root and apply to jslib * Rebuild package-lock.json * Disable husky in CI * Revert an incorrect find/replace * Add jslib/shared/.eslintrc rules to root eslintrc * Revert package.json change to ignore spec files when linting * Ensure custom matcher gets imported in jslib tests * Fix small workflow bugs from merging * Try and get CI builds moving again * Always sign and notorize builds in CI * Revert erroneous verion bump
125 lines
4.0 KiB
TypeScript
125 lines
4.0 KiB
TypeScript
import { ChangeDetectorRef, Component, NgZone, OnDestroy, OnInit } from "@angular/core";
|
|
|
|
import { BroadcasterService } from "@/jslib/common/src/abstractions/broadcaster.service";
|
|
import { I18nService } from "@/jslib/common/src/abstractions/i18n.service";
|
|
import { MessagingService } from "@/jslib/common/src/abstractions/messaging.service";
|
|
import { PlatformUtilsService } from "@/jslib/common/src/abstractions/platformUtils.service";
|
|
|
|
import { StateService } from "../../abstractions/state.service";
|
|
import { GroupEntry } from "../../models/groupEntry";
|
|
import { SimResult } from "../../models/simResult";
|
|
import { UserEntry } from "../../models/userEntry";
|
|
import { SyncService } from "../../services/sync.service";
|
|
import { ConnectorUtils } from "../../utils";
|
|
|
|
const BroadcasterSubscriptionId = "DashboardComponent";
|
|
|
|
@Component({
|
|
selector: "app-dashboard",
|
|
templateUrl: "dashboard.component.html",
|
|
})
|
|
export class DashboardComponent implements OnInit, OnDestroy {
|
|
simGroups: GroupEntry[];
|
|
simUsers: UserEntry[];
|
|
simEnabledUsers: UserEntry[] = [];
|
|
simDisabledUsers: UserEntry[] = [];
|
|
simDeletedUsers: UserEntry[] = [];
|
|
simPromise: Promise<SimResult>;
|
|
simSinceLast = false;
|
|
syncPromise: Promise<[GroupEntry[], UserEntry[]]>;
|
|
startPromise: Promise<any>;
|
|
lastGroupSync: Date;
|
|
lastUserSync: Date;
|
|
syncRunning: boolean;
|
|
|
|
constructor(
|
|
private i18nService: I18nService,
|
|
private syncService: SyncService,
|
|
private broadcasterService: BroadcasterService,
|
|
private ngZone: NgZone,
|
|
private messagingService: MessagingService,
|
|
private platformUtilsService: PlatformUtilsService,
|
|
private changeDetectorRef: ChangeDetectorRef,
|
|
private stateService: StateService
|
|
) {}
|
|
|
|
async ngOnInit() {
|
|
this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => {
|
|
this.ngZone.run(async () => {
|
|
switch (message.command) {
|
|
case "dirSyncCompleted":
|
|
this.updateLastSync();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
this.changeDetectorRef.detectChanges();
|
|
});
|
|
});
|
|
|
|
this.syncRunning = !!(await this.stateService.getSyncingDir());
|
|
this.updateLastSync();
|
|
}
|
|
|
|
async ngOnDestroy() {
|
|
this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);
|
|
}
|
|
|
|
async start() {
|
|
this.startPromise = this.syncService.sync(false, false);
|
|
await this.startPromise;
|
|
this.messagingService.send("scheduleNextDirSync");
|
|
this.syncRunning = true;
|
|
this.platformUtilsService.showToast("success", null, this.i18nService.t("syncingStarted"));
|
|
}
|
|
|
|
async stop() {
|
|
this.messagingService.send("cancelDirSync");
|
|
this.syncRunning = false;
|
|
this.platformUtilsService.showToast("success", null, this.i18nService.t("syncingStopped"));
|
|
}
|
|
|
|
async sync() {
|
|
this.syncPromise = this.syncService.sync(false, false);
|
|
const result = await this.syncPromise;
|
|
const groupCount = result[0] != null ? result[0].length : 0;
|
|
const userCount = result[1] != null ? result[1].length : 0;
|
|
this.platformUtilsService.showToast(
|
|
"success",
|
|
null,
|
|
this.i18nService.t("syncCounts", groupCount.toString(), userCount.toString())
|
|
);
|
|
}
|
|
|
|
async simulate() {
|
|
this.simGroups = [];
|
|
this.simUsers = [];
|
|
this.simEnabledUsers = [];
|
|
this.simDisabledUsers = [];
|
|
this.simDeletedUsers = [];
|
|
|
|
try {
|
|
this.simPromise = ConnectorUtils.simulate(
|
|
this.syncService,
|
|
this.i18nService,
|
|
this.simSinceLast
|
|
);
|
|
const result = await this.simPromise;
|
|
this.simGroups = result.groups;
|
|
this.simUsers = result.users;
|
|
this.simEnabledUsers = result.enabledUsers;
|
|
this.simDisabledUsers = result.disabledUsers;
|
|
this.simDeletedUsers = result.deletedUsers;
|
|
} catch (e) {
|
|
this.simGroups = null;
|
|
this.simUsers = null;
|
|
}
|
|
}
|
|
|
|
private async updateLastSync() {
|
|
this.lastGroupSync = await this.stateService.getLastGroupSync();
|
|
this.lastUserSync = await this.stateService.getLastUserSync();
|
|
}
|
|
}
|