shiori/internal/view/js/page/base.js
2019-10-07 13:38:40 +07:00

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();
}
}
});
},
}
}