mirror of
https://github.com/bitwarden/browser
synced 2025-12-17 16:53:34 +00:00
76 lines
2.0 KiB
TypeScript
76 lines
2.0 KiB
TypeScript
import { UriMatchType } from '../../enums/uriMatchType';
|
|
|
|
import { View } from './view';
|
|
|
|
import { LoginUri } from '../domain/loginUri';
|
|
|
|
import { PlatformUtilsService } from '../../abstractions/platformUtils.service';
|
|
|
|
import { UtilsService } from '../../services/utils.service';
|
|
|
|
export class LoginUriView implements View {
|
|
match: UriMatchType = null;
|
|
|
|
// tslint:disable
|
|
private _uri: string;
|
|
private _domain: string;
|
|
private _hostname: string;
|
|
// tslint:enable
|
|
|
|
constructor(u?: LoginUri) {
|
|
if (!u) {
|
|
return;
|
|
}
|
|
|
|
this.match = u.match;
|
|
}
|
|
|
|
get uri(): string {
|
|
return this._uri;
|
|
}
|
|
set uri(value: string) {
|
|
this._uri = value;
|
|
this._domain = null;
|
|
}
|
|
|
|
get domain(): string {
|
|
if (this._domain == null && this.uri != null) {
|
|
const containerService = (window as any).bitwardenContainerService;
|
|
if (containerService) {
|
|
const platformUtilsService: PlatformUtilsService = containerService.getPlatformUtilsService();
|
|
this._domain = platformUtilsService.getDomain(this.uri);
|
|
if (this._domain === '') {
|
|
this._domain = null;
|
|
}
|
|
} else {
|
|
throw new Error('window.bitwardenContainerService not initialized.');
|
|
}
|
|
}
|
|
|
|
return this._domain;
|
|
}
|
|
|
|
get hostname(): string {
|
|
if (this._hostname == null && this.uri != null) {
|
|
this._hostname = UtilsService.getHostname(this.uri);
|
|
if (this._hostname === '') {
|
|
this._hostname = null;
|
|
}
|
|
}
|
|
|
|
return this._hostname;
|
|
}
|
|
|
|
get hostnameOrUri(): string {
|
|
return this.hostname != null ? this.hostname : this.uri;
|
|
}
|
|
|
|
get isWebsite(): boolean {
|
|
return this.uri != null && (this.uri.indexOf('http://') === 0 || this.uri.indexOf('https://') === 0);
|
|
}
|
|
|
|
get canLaunch(): boolean {
|
|
return this.uri != null && this.uri.indexOf('://') > -1;
|
|
}
|
|
}
|