增加Cookie检测并提示

文件管理器后缀名过滤改为从服务端获取后缀
This commit is contained in:
fangxiang 2022-06-20 15:45:31 +08:00
parent 4272ee1d6e
commit 740e831202
9 changed files with 182 additions and 74 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "media_player_client", "name": "media_player_client",
"version": "1.4.14", "version": "1.4.15",
"description": "A Quasar Framework app", "description": "A Quasar Framework app",
"productName": "MediaPlayerClient", "productName": "MediaPlayerClient",
"author": "fangxiang <fangxiang@cloudview.work>", "author": "fangxiang <fangxiang@cloudview.work>",

View File

@ -31,6 +31,22 @@ export default defineComponent({
document.title = $t.t("title"); document.title = $t.t("title");
if (!navigator.cookieEnabled) {
$q.dialog({
title: $t.t("error"),
html: true,
message: `
<p>${$t.t(
"The client depends on the Cookie function. If cookies are not enabled in the current browser, the client cannot be used!"
)}</p>
<p> ${$t.t("Please refresh this page after cookies are enabled")} </p>
`,
persistent: true,
ok: false,
cancel: false,
});
}
// quasar // quasar
try { try {
{ {

View File

@ -0,0 +1,65 @@
import GlobalData from "src/common/GlobalData";
export default class FileSuffixHelper {
public static kVideoDefaultSuffix = ".mp4;.avi;.ts;.webm;.flv;.mkv;.wmv;";
public static kImageDefaultSuffix = ".jpg;.png;.bmp;";
public static debug_mode = false;
public static get videoSuffix() {
if (FileSuffixHelper.debug_mode) {
return null;
}
return (
GlobalData.getInstance().applicationConfig?.video_suffix_filter ||
FileSuffixHelper.kVideoDefaultSuffix
);
}
public static isVideoPath(path: string): boolean {
return this.isPathToSuffix(
path,
this.videoSuffix || FileSuffixHelper.kVideoDefaultSuffix
);
}
public static get imageSuffix() {
if (FileSuffixHelper.debug_mode) {
return null;
}
return (
GlobalData.getInstance().applicationConfig?.image_suffix_filter ||
FileSuffixHelper.kImageDefaultSuffix
);
}
public static isImagePath(path: string): boolean {
return this.isPathToSuffix(
path,
this.imageSuffix || FileSuffixHelper.kImageDefaultSuffix
);
}
public static isPathToSuffix(path: string, suffixFilter: string): boolean {
if (path && suffixFilter) {
for (const suffix of suffixFilter
.split(";")
.filter((e) => e && e != "")) {
if (path.endsWith(suffix)) {
return true;
}
}
}
return false;
}
public static get allSuffix() {
if (FileSuffixHelper.debug_mode) {
return null;
}
return (
(this.videoSuffix || FileSuffixHelper.kVideoDefaultSuffix) +
(this.imageSuffix || FileSuffixHelper.kImageDefaultSuffix)
);
}
}

View File

@ -154,14 +154,14 @@
@dblclick=" @dblclick="
media_url_label.startsWith($t('file path')) && media_url_label.startsWith($t('file path')) &&
item_data.window_type == 'EwindowType::Image' item_data.window_type == 'EwindowType::Image'
? doSelectFile('.jpg;.png') ? doSelectImageFile()
: item_data.window_type == 'EwindowType::Clock' : item_data.window_type == 'EwindowType::Clock'
? showClockDialog() ? showClockDialog()
: item_data.window_type == 'EwindowType::Weather' : item_data.window_type == 'EwindowType::Weather'
? showWeatherDialog() ? showWeatherDialog()
: item_data.window_type == 'EwindowType::Timer' : item_data.window_type == 'EwindowType::Timer'
? showTimerDialog() ? showTimerDialog()
: showPlaylistDialog('.mp4;.avi;.ts;.webm;.flv;.mkv;.wmv') : showVideoPlayListDialog()
" "
v-model="item_data.media_url" v-model="item_data.media_url"
:readonly=" :readonly="
@ -328,6 +328,7 @@ import WeatherSignalSourceDialog from "src/components/WeatherSignalSourceDialog.
import TimerSignalSourceDialog from "src/components/TimerSignalSourceDialog.vue"; import TimerSignalSourceDialog from "src/components/TimerSignalSourceDialog.vue";
import FileEntity from "src/entities/FileEntity"; import FileEntity from "src/entities/FileEntity";
import FileSuffixHelper from "src/common/FileSuffixHelper";
export default defineComponent({ export default defineComponent({
name: "ComponentSignalSourceDialog", name: "ComponentSignalSourceDialog",
@ -484,6 +485,71 @@ export default defineComponent({
} }
}; };
const doSelectFile = async (filter: string) => {
if (!media_url_label.value.startsWith($t.t("file path"))) {
return;
}
const obj = await file_manage_dialog.value.showDialogAsync(
"select",
filter
);
if (obj) {
interface __I {
path: string;
file: FileEntity;
}
let { path, file }: __I = obj;
if (path && file) {
item_data.media_url = path + "/" + file.name;
if (
!item_data.name ||
item_data.name.trim() == "" ||
item_data.name.trim() == $t.t("new signal source")
) {
nextTick(() => {
item_data.name = file.name;
});
}
}
}
};
const showPlaylistDialog = async (filter: string | null) => {
if (item_data.window_type != "EwindowType::Multimedia") {
return;
}
const result = await playlist_dialog.value.showDialogAsync(
item_data.media_url,
filter
);
if (Array.isArray(result)) {
if (result.length) {
if (
!item_data.name ||
item_data.name.trim() == "" ||
item_data.name.trim() == $t.t("new signal source")
) {
try {
const temp_item = decodeURI(result[0].toString());
let index = temp_item.lastIndexOf("\\");
if (index == -1) {
index = temp_item.lastIndexOf("/");
}
if (index + 1 == temp_item.length) {
item_data.name = temp_item.substr(index);
} else if (index + 1 < temp_item.length) {
item_data.name = temp_item.substr(index + 1);
}
} catch (e) {
console.log(e);
}
}
item_data.media_url = decodeURI(JSON.stringify(result));
}
}
};
return { return {
show_dialog, show_dialog,
type, type,
@ -575,68 +641,20 @@ export default defineComponent({
item_data.media_url = decodeURI(result); item_data.media_url = decodeURI(result);
} }
}, },
async showVideoPlayListDialog() {
return showPlaylistDialog(FileSuffixHelper.videoSuffix);
},
async showPlaylistDialog(filter: string) { async showPlaylistDialog(filter: string) {
if (item_data.window_type != "EwindowType::Multimedia") { return showPlaylistDialog(filter);
return; },
} async doSelectImageFile() {
const result = await playlist_dialog.value.showDialogAsync( return doSelectFile(
item_data.media_url, GlobalData.getInstance().applicationConfig?.image_suffix_filter ||
filter ".jpg;.png"
); );
if (Array.isArray(result)) {
if (result.length) {
if (
!item_data.name ||
item_data.name.trim() == "" ||
item_data.name.trim() == $t.t("new signal source")
) {
try {
const temp_item = decodeURI(result[0].toString());
let index = temp_item.lastIndexOf("\\");
if (index == -1) {
index = temp_item.lastIndexOf("/");
}
if (index + 1 == temp_item.length) {
item_data.name = temp_item.substr(index);
} else if (index + 1 < temp_item.length) {
item_data.name = temp_item.substr(index + 1);
}
} catch (e) {
console.log(e);
}
}
item_data.media_url = decodeURI(JSON.stringify(result));
}
}
}, },
async doSelectFile(filter: string) { async doSelectFile(filter: string) {
if (!media_url_label.value.startsWith($t.t("file path"))) { return doSelectFile(filter);
return;
}
const obj = await file_manage_dialog.value.showDialogAsync(
"select",
filter
);
if (obj) {
interface __I {
path: string;
file: FileEntity;
}
let { path, file }: __I = obj;
if (path && file) {
item_data.media_url = path + "/" + file.name;
if (
!item_data.name ||
item_data.name.trim() == "" ||
item_data.name.trim() == $t.t("new signal source")
) {
nextTick(() => {
item_data.name = file.name;
});
}
}
}
}, },
}; };
}, },

View File

@ -29,4 +29,6 @@ export default class ApplicationConfigEntity {
registered: boolean = false; registered: boolean = false;
hdmi_in_decode_type_1: string | undefined; hdmi_in_decode_type_1: string | undefined;
device_hdmi_output_count = 1; device_hdmi_output_count = 1;
video_suffix_filter: string | null = "";
image_suffix_filter: string | null = "";
} }

View File

@ -5,6 +5,7 @@ export default {
title: "MediaPlayerWebApp", title: "MediaPlayerWebApp",
failed: "失败", failed: "失败",
fail: "失败", fail: "失败",
error: "错误",
Confirm: "确认", Confirm: "确认",
success: "成功", success: "成功",
Cancel: "取消", Cancel: "取消",
@ -577,4 +578,8 @@ export default {
"正计时的时候起始时间不要超过当前时间,倒计时的时候目标时间不要小于当前时间", "正计时的时候起始时间不要超过当前时间,倒计时的时候目标时间不要小于当前时间",
"pos x": "X坐标", "pos x": "X坐标",
"No.": "序号", "No.": "序号",
"The client depends on the Cookie function. If cookies are not enabled in the current browser, the client cannot be used!":
"客户端依赖Cookie功能。如果当前浏览器未启用Cookie则客户端无法使用!",
"Please refresh this page after cookies are enabled":
"请在开启Cookie功能后刷新该页面",
}; };

View File

@ -150,6 +150,7 @@ import TopToolBar from "src/pages/TopToolBar.vue";
import FooterPortrait from "src/pages/FooterPortrait.vue"; import FooterPortrait from "src/pages/FooterPortrait.vue";
import EventBus, { EventNamesDefine } from "src/common/EventBus"; import EventBus, { EventNamesDefine } from "src/common/EventBus";
import { useStore } from "src/store"; import { useStore } from "src/store";
import FileSuffixHelper from "src/common/FileSuffixHelper";
export default defineComponent({ export default defineComponent({
name: "MainLayout", name: "MainLayout",
@ -163,6 +164,10 @@ export default defineComponent({
(window as any).setPcTheme(); (window as any).setPcTheme();
} catch {} } catch {}
if ($store.state.advanced_debug) {
FileSuffixHelper.debug_mode = true;
}
const landspace = $store.state.landspace; const landspace = $store.state.landspace;
let show_left_tool_bar = ref(true); let show_left_tool_bar = ref(true);

View File

@ -183,6 +183,7 @@ import WindowOtherStateChangeNotifyEntity from "src/entities/WindowOtherStateCha
import { WindowOpenNotifyEntity } from "src/entities/MultimediaWindowEntity"; import { WindowOpenNotifyEntity } from "src/entities/MultimediaWindowEntity";
import { NotifyMessage } from "src/common/ClientConnection"; import { NotifyMessage } from "src/common/ClientConnection";
import EventBus, { EventNamesDefine } from "src/common/EventBus"; import EventBus, { EventNamesDefine } from "src/common/EventBus";
import FileSuffixHelper from "src/common/FileSuffixHelper";
class Rect { class Rect {
start_x = 0; start_x = 0;
@ -994,7 +995,7 @@ export default defineComponent({
if (old_signal_source) { if (old_signal_source) {
const obj = await file_manage_dialog.value.showDialogAsync( const obj = await file_manage_dialog.value.showDialogAsync(
"select", "select",
".mp4;.avi;.ts;.webm;.flv;.mkv;.jpg;.png;" FileSuffixHelper.allSuffix
); );
if (obj) { if (obj) {
interface __I { interface __I {
@ -1101,7 +1102,7 @@ export default defineComponent({
const obj = await file_manage_dialog.value.showDialogAsync( const obj = await file_manage_dialog.value.showDialogAsync(
"select", "select",
".mp4;.avi;.ts;.webm;.flv;.mkv;.wmv;.jpg;.png;" FileSuffixHelper.allSuffix
); );
if (obj) { if (obj) {

View File

@ -201,6 +201,7 @@ import vue3ResizeDrag from "../third_lib/vue3-resize-drag/components/vue3-resize
import FileManageDialog from "src/components/FileManageDialog.vue"; import FileManageDialog from "src/components/FileManageDialog.vue";
import FileEntity from "src/entities/FileEntity"; import FileEntity from "src/entities/FileEntity";
import { SignalSourceEntity } from "src/entities/SignalSourceEntity"; import { SignalSourceEntity } from "src/entities/SignalSourceEntity";
import FileSuffixHelper from "src/common/FileSuffixHelper";
class Rect { class Rect {
start_x = 0; start_x = 0;
@ -1102,7 +1103,7 @@ export default defineComponent({
const obj = await file_manage_dialog.value.showDialogAsync( const obj = await file_manage_dialog.value.showDialogAsync(
"select", "select",
".mp4;.avi;.ts;.webm;.flv;.mkv;.jpg;.png;" FileSuffixHelper.allSuffix
); );
if (obj) { if (obj) {
interface __I { interface __I {
@ -1187,7 +1188,7 @@ export default defineComponent({
if (old_signal_source) { if (old_signal_source) {
const obj = await file_manage_dialog.value.showDialogAsync( const obj = await file_manage_dialog.value.showDialogAsync(
"select", "select",
".mp4;.avi;.ts;.webm;.flv;.mkv;.jpg;.png;" FileSuffixHelper.allSuffix
); );
if (obj) { if (obj) {
interface __I { interface __I {
@ -1198,19 +1199,14 @@ export default defineComponent({
if (path && file) { if (path && file) {
const full_path = (path + "/" + file.name).replace(/\\/g, "/"); const full_path = (path + "/" + file.name).replace(/\\/g, "/");
const entity: SignalSourceEntity = new SignalSourceEntity(); const entity: SignalSourceEntity = new SignalSourceEntity();
if ( if (FileSuffixHelper.isVideoPath(file.name)) {
file.name.endsWith("mp4") ||
file.name.endsWith("avi") ||
file.name.endsWith("ts") ||
file.name.endsWith("webm") ||
file.name.endsWith("flv") ||
file.name.endsWith("mkv")
) {
entity.window_type = "EwindowType::Multimedia"; entity.window_type = "EwindowType::Multimedia";
entity.media_url = JSON.stringify([full_path]); entity.media_url = JSON.stringify([full_path]);
} else { } else if (FileSuffixHelper.isImagePath(file.name)) {
entity.window_type = "EwindowType::Image"; entity.window_type = "EwindowType::Image";
entity.media_url = full_path; entity.media_url = full_path;
} else {
return;
} }
entity.name = file.name; entity.name = file.name;
entity.local_file_flag = true; entity.local_file_flag = true;