@e280/authlocal
Version:
User-sovereign login system for everybody
50 lines (39 loc) • 998 B
text/typescript
import {Signal, signal} from "@benev/slate"
import {Identity} from "../../../../trust/exports/authority.js"
import {validLabel} from "../../../../common/utils/validation.js"
export class IdentityDraft {
#identity: Signal<Identity>
#label: Signal<string>
constructor(identity: Identity) {
this.#identity = signal(identity)
this.#label = signal(identity.label)
}
get identity() {
return this.#identity.value
}
set identity(fresh: Identity) {
this.#identity.value = fresh
this.#label.value = fresh.label
}
setEditedLabel(label: string) {
this.#label.value = label
}
getEditedLabel() {
return this.#label.value
}
hasValidChanges() {
const label = this.getEditedLabel()
const changed = label !== this.identity.label
return changed && validLabel(label)
}
getValidEditedIdentity() {
const label = this.getEditedLabel()
return validLabel(label)
? {
label,
id: this.#identity.value.id,
secret: this.#identity.value.secret,
}
: null
}
}