mirror of
https://github.com/go-shiori/shiori.git
synced 2025-03-13 00:21:35 +08:00
114 lines
No EOL
2.5 KiB
JavaScript
114 lines
No EOL
2.5 KiB
JavaScript
export default {
|
|
props: {
|
|
activeAccount: {
|
|
type: Object,
|
|
default() {
|
|
return {
|
|
id: 0,
|
|
username: "",
|
|
owner: false,
|
|
}
|
|
}
|
|
},
|
|
appOptions: {
|
|
type: Object,
|
|
default() {
|
|
return {
|
|
showId: false,
|
|
listMode: false,
|
|
nightMode: false,
|
|
hideThumbnail: false,
|
|
hideExcerpt: false,
|
|
|
|
keepMetadata: false,
|
|
useArchive: false,
|
|
makePublic: false,
|
|
};
|
|
}
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
dialog: {}
|
|
}
|
|
},
|
|
methods: {
|
|
defaultDialog() {
|
|
return {
|
|
visible: false,
|
|
loading: false,
|
|
title: '',
|
|
content: '',
|
|
fields: [],
|
|
showLabel: false,
|
|
mainText: 'Yes',
|
|
secondText: '',
|
|
mainClick: () => {
|
|
this.dialog.visible = false;
|
|
},
|
|
secondClick: () => {
|
|
this.dialog.visible = false;
|
|
},
|
|
escPressed: () => {
|
|
if (!this.loading) this.dialog.visible = false;
|
|
}
|
|
}
|
|
},
|
|
showDialog(cfg) {
|
|
var base = this.defaultDialog();
|
|
base.visible = true;
|
|
if (cfg.loading) base.loading = cfg.loading;
|
|
if (cfg.title) base.title = cfg.title;
|
|
if (cfg.content) base.content = cfg.content;
|
|
if (cfg.fields) base.fields = cfg.fields;
|
|
if (cfg.showLabel) base.showLabel = cfg.showLabel;
|
|
if (cfg.mainText) base.mainText = cfg.mainText;
|
|
if (cfg.secondText) base.secondText = cfg.secondText;
|
|
if (cfg.mainClick) base.mainClick = cfg.mainClick;
|
|
if (cfg.secondClick) base.secondClick = cfg.secondClick;
|
|
if (cfg.escPressed) base.escPressed = cfg.escPressed;
|
|
this.dialog = base;
|
|
},
|
|
async getErrorMessage(err) {
|
|
switch (err.constructor) {
|
|
case Error:
|
|
return err.message;
|
|
case Response:
|
|
var text = await err.text();
|
|
return `${text} (${err.status})`;
|
|
default:
|
|
return err;
|
|
}
|
|
},
|
|
isSessionError(err) {
|
|
switch (err.toString().replace(/\(\d+\)/g, "").trim().toLowerCase()) {
|
|
case "session is not exist":
|
|
case "session has been expired":
|
|
return true
|
|
default:
|
|
return false;
|
|
}
|
|
},
|
|
showErrorDialog(msg) {
|
|
var sessionError = this.isSessionError(msg),
|
|
dialogContent = sessionError ? "Session has expired, please login again." : msg;
|
|
|
|
this.showDialog({
|
|
visible: true,
|
|
title: 'Error',
|
|
content: dialogContent,
|
|
mainText: 'OK',
|
|
mainClick: () => {
|
|
this.dialog.visible = false;
|
|
if (sessionError) {
|
|
var loginUrl = new Url("login", document.baseURI);
|
|
loginUrl.query.dst = window.location.href;
|
|
|
|
document.cookie = "session-id=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;";
|
|
location.href = loginUrl.toString();
|
|
}
|
|
}
|
|
});
|
|
},
|
|
}
|
|
} |