1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Merge pull request #720 from dmitrylyzo/exit_on_back

Add app exit on "Go back"
This commit is contained in:
dkanada 2020-01-31 01:05:15 +09:00 committed by GitHub
commit 1a3037229d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 67 additions and 14 deletions

View file

@ -545,13 +545,18 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
page.back();
}
/**
* Pages of "no return" (when "Go back" should behave differently, probably quitting the application).
*/
var startPages = ['home', 'login', 'selectserver'];
function canGoBack() {
var curr = current();
if (!curr) {
return false;
}
if (curr.type === 'home') {
if (!document.querySelector('.dialogContainer') && startPages.indexOf(curr.type) !== -1) {
return false;
}
return page.canGoBack();

View file

@ -299,6 +299,52 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet
return features;
}();
/**
* Do exit according to platform
*/
function doExit() {
try {
if (window.NativeShell) {
window.NativeShell.AppHost.exit();
} else if (browser.tizen) {
tizen.application.getCurrentApplication().exit();
} else if (browser.web0s) {
webOS.platformBack();
} else {
window.close();
}
} catch (err) {
console.log("error closing application: " + err);
}
}
var exitPromise;
/**
* Ask user for exit
*/
function askForExit() {
if (!!exitPromise) {
return;
}
require(["actionsheet"], function (actionsheet) {
exitPromise = actionsheet.show({
title: Globalize.translate("MessageConfirmAppExit"),
items: [
{id: "yes", name: Globalize.translate("Yes")},
{id: "no", name: Globalize.translate("No")}
]
}).then(function (value) {
if (value === "yes") {
doExit();
}
}).finally(function () {
exitPromise = null;
});
});
}
var deviceId;
var deviceName;
var appName = "Jellyfin Web";
@ -314,16 +360,10 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet
alert("setWindowState is not supported and should not be called");
},
exit: function () {
if (window.NativeShell) {
window.NativeShell.AppHost.exit();
} else if (browser.tizen) {
try {
tizen.application.getCurrentApplication().exit();
} catch (err) {
console.log("error closing application: " + err);
}
if (!!window.appMode && browser.tizen) {
askForExit();
} else {
window.close();
doExit();
}
},
supports: function (command) {

View file

@ -1,4 +1,4 @@
define(['playbackManager', 'focusManager', 'appRouter', 'dom'], function (playbackManager, focusManager, appRouter, dom) {
define(['playbackManager', 'focusManager', 'appRouter', 'dom', 'apphost'], function (playbackManager, focusManager, appRouter, dom, appHost) {
'use strict';
var lastInputTime = new Date().getTime();
@ -96,7 +96,11 @@ define(['playbackManager', 'focusManager', 'appRouter', 'dom'], function (playba
appRouter.showSettings();
break;
case 'back':
if (appRouter.canGoBack()) {
appRouter.back();
} else if (appHost.supports('exit')) {
appHost.exit();
}
break;
case 'forward':
break;

View file

@ -226,7 +226,8 @@ define([
autoFocus: false,
anonymous: true,
startup: true,
controller: "auth/login"
controller: "auth/login",
type: "login"
});
defineRoute({
path: "/metadataimages.html",
@ -312,7 +313,8 @@ define([
autoFocus: false,
anonymous: true,
startup: true,
controller: "auth/selectserver"
controller: "auth/selectserver",
type: "selectserver"
});
defineRoute({
path: "/serveractivity.html",

View file

@ -946,6 +946,7 @@
"MessageAlreadyInstalled": "This version is already installed.",
"MessageAreYouSureDeleteSubtitles": "Are you sure you wish to delete this subtitle file?",
"MessageAreYouSureYouWishToRemoveMediaFolder": "Are you sure you wish to remove this media folder?",
"MessageConfirmAppExit": "Do you want to exit?",
"MessageConfirmDeleteGuideProvider": "Are you sure you wish to delete this guide provider?",
"MessageConfirmDeleteTunerDevice": "Are you sure you wish to delete this device?",
"MessageConfirmProfileDeletion": "Are you sure you wish to delete this profile?",

View file

@ -890,6 +890,7 @@
"MessageAlreadyInstalled": "Данная версия уже установлена.",
"MessageAreYouSureDeleteSubtitles": "Вы действительно хотите удалить данный файл субитров?",
"MessageAreYouSureYouWishToRemoveMediaFolder": "Вы действительно хотите изъять данную медиапапку?",
"MessageConfirmAppExit": "Вы хотите выйти?",
"MessageConfirmDeleteGuideProvider": "Вы действительно хотите удалить данного поставщика телегида?",
"MessageConfirmDeleteTunerDevice": "Вы действительно хотите удалить данное устройство?",
"MessageConfirmProfileDeletion": "Вы действительно хотите удалить данный профиль?",