WIP managing a per-app current identity from the Tilde Friends navigation bar.
This commit is contained in:
@ -56,6 +56,8 @@ class TfNavigationElement extends LitElement {
|
||||
spark_lines: {type: Object},
|
||||
version: {type: Object},
|
||||
show_version: {type: Boolean},
|
||||
identity: {type: String},
|
||||
identities: {type: Array},
|
||||
};
|
||||
}
|
||||
|
||||
@ -65,6 +67,7 @@ class TfNavigationElement extends LitElement {
|
||||
this.show_permissions = false;
|
||||
this.status = {};
|
||||
this.spark_lines = {};
|
||||
this.identities = [];
|
||||
}
|
||||
|
||||
/**
|
||||
@ -128,6 +131,37 @@ class TfNavigationElement extends LitElement {
|
||||
}
|
||||
}
|
||||
|
||||
set_active_identity(event) {
|
||||
send({action: 'setActiveIdentity', identity: event.srcElement.value});
|
||||
}
|
||||
|
||||
create_identity(event) {
|
||||
send({action: 'createIdentity'});
|
||||
}
|
||||
|
||||
render_identity() {
|
||||
if (this.identities?.length) {
|
||||
return html`
|
||||
<link type="text/css" rel="stylesheet" href="/static/w3.css" />
|
||||
<select
|
||||
@change=${this.set_active_identity}
|
||||
class="w3-input"
|
||||
style="flex: 0 1 auto; width: auto; display: inline-blocktext-overflow: ellipsis; overflow: hidden; white-space: nowrap">
|
||||
${this.identities.map(x => html`<option ?selected=${x === this.identity}>${x}</option>`)}
|
||||
</select>
|
||||
`;
|
||||
} else {
|
||||
return html`
|
||||
<link type="text/css" rel="stylesheet" href="/static/w3.css" />
|
||||
<button
|
||||
@click=${this.create_identity}
|
||||
class="w3-button w3-blue">
|
||||
Create an Identity
|
||||
</button>
|
||||
`;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* TODOC
|
||||
* @returns
|
||||
@ -257,6 +291,7 @@ class TfNavigationElement extends LitElement {
|
||||
x,
|
||||
])}</span
|
||||
>
|
||||
${this.render_identity()}
|
||||
<span style="flex: 0 0; white-space: nowrap"
|
||||
>${this.render_login()}</span
|
||||
>
|
||||
@ -1125,11 +1160,17 @@ function api_setHash(hash) {
|
||||
function _receive_websocket_message(message) {
|
||||
if (message && message.action == 'session') {
|
||||
setStatusMessage('🟢 Executing...', kStatusColor);
|
||||
document.getElementsByTagName('tf-navigation')[0].credentials =
|
||||
message.credentials;
|
||||
let navigation = document.getElementsByTagName('tf-navigation')[0];
|
||||
navigation.credentials = message.credentials;
|
||||
navigation.identities = message.identities;
|
||||
navigation.identity = message.identity;
|
||||
} else if (message && message.action == 'permissions') {
|
||||
document.getElementsByTagName('tf-navigation')[0].permissions =
|
||||
message.permissions ?? {};
|
||||
let navigation = document.getElementsByTagName('tf-navigation')[0];
|
||||
navigation.permissions = message.permissions ?? {};
|
||||
} else if (message && message.action == 'identities') {
|
||||
let navigation = document.getElementsByTagName('tf-navigation')[0];
|
||||
navigation.identities = message.identities;
|
||||
navigation.identity = message.identity;
|
||||
} else if (message && message.action == 'ready') {
|
||||
setStatusMessage(null);
|
||||
if (window.location.hash) {
|
||||
|
Reference in New Issue
Block a user