Seamless host switching

This commit is contained in:
2022-09-27 19:22:57 -04:00
parent 8b76181b4d
commit 9785af43a0
2 changed files with 45 additions and 39 deletions

View File

@ -73,7 +73,6 @@
data() {
return {
show: false,
host: vistax.state.host,
x_client: this.client,
x_server: this.server,
x_user: this.user,
@ -82,10 +81,34 @@
verifycode: null
};
},
computed: {
host: {
get() {
return vistax.state.host;
},
set(value) {
vistax.state.host = value;
}
}
},
watch: {
host(value) {
vistax.state.host = value;
this.logout();
host: {
async handler(value) {
this.logout();
this.x_client = await (value ? vistax.Client.fromCookie(this.secret, value) : vistax.Client.fromCookie(this.secret));
this.banner = await this.x_client.XUS_INTRO_MSG();
if((await this.x_client.userinfo()).result) try {
var user = await this.x_client.XUS_GET_USER_INFO();
this.x_user = user[0] ? user : null
} catch(ex) {
this.x_user = null;
}
this.$emit('update:user', this.x_user);
this.show = !this.x_user;
this.$emit('update:server', this.x_server = (await this.x_client.serverinfo()).result);
console.log('Backend secret', this.secret);
console.log(this.banner);
}, immediate: true
},
client(value) { this.x_client = value; },
x_client(value) { this.$emit('update:client', value); },
@ -94,38 +117,19 @@
user(value) { this.x_user = value; },
x_user(value) { this.$emit('update:user', value); }
},
async mounted() {
this.connect();
},
methods: {
async connect() {
if(this.x_client) return this.x_client;
this.x_client = await vistax.Client.fromCookie(this.secret);
this.banner = await this.x_client.XUS_INTRO_MSG();
if((await this.x_client.userinfo()).result) try {
var user = await this.x_client.XUS_GET_USER_INFO();
this.x_user = user[0] ? user : null
} catch(ex) {
this.x_user = null;
}
this.$emit('update:user', this.x_user);
this.show = !this.x_user;
this.$emit('update:server', this.x_server = (await this.x_client.serverinfo()).result);
console.log('Backend secret', this.secret);
console.log(this.banner);
return this.x_client;
},
async login(evt) {
if(!this.x_client) await this.connect();
var res = await ((this.accesscode && this.verifycode) ? this.x_client.authenticate(this.accesscode + ';' + this.verifycode) : this.x_client.authenticate());
if(!!res.result[0]) {
var user = await this.x_client.XUS_GET_USER_INFO();
this.x_user = user[0] ? user : null
} else this.x_user = null;
this.$emit('update:user', this.x_user);
this.show = !this.x_user;
this.$emit('update:server', this.x_server = (await this.x_client.serverinfo()).result);
console.log('Authenticate', res);
if(this.x_client) {
var res = await ((this.accesscode && this.verifycode) ? this.x_client.authenticate(this.accesscode + ';' + this.verifycode) : this.x_client.authenticate());
if(!!res.result[0]) {
var user = await this.x_client.XUS_GET_USER_INFO();
this.x_user = user[0] ? user : null
} else this.x_user = null;
this.$emit('update:user', this.x_user);
this.show = !this.x_user;
this.$emit('update:server', this.x_server = (await this.x_client.serverinfo()).result);
console.log('Authenticate', res);
}
},
async logout(evt) {
if(this.x_client) {
@ -134,6 +138,8 @@
this.$emit('update:server', this.x_server = null);
this.$emit('update:user', this.x_user = null);
}
this.banner = null;
this.show = true;
}
}
};