feat: Conditionally open file links using Electron shell on desktop and warn on mobile platforms.

This commit is contained in:
2025-12-26 16:44:53 -05:00
parent d92fb5b679
commit b20ca4d966
2 changed files with 27 additions and 18 deletions

20
main.js
View File

@@ -28,7 +28,6 @@ __export(main_exports, {
});
module.exports = __toCommonJS(main_exports);
var import_obsidian = require("obsidian");
var { shell } = require("electron");
var DEFAULT_SETTINGS = {
mySetting: "default"
};
@@ -212,14 +211,19 @@ var MenuPlugin = class extends import_obsidian.Plugin {
a.addEventListener("click", (e) => {
e.preventDefault();
if (url.startsWith("file://")) {
try {
let filePath = decodeURIComponent(url.substring(7));
if (filePath.startsWith("/") && filePath.charAt(2) === ":") {
filePath = filePath.substring(1);
if (import_obsidian.Platform.isDesktop) {
try {
const { shell } = require("electron");
let filePath = decodeURIComponent(url.substring(7));
if (filePath.startsWith("/") && filePath.charAt(2) === ":") {
filePath = filePath.substring(1);
}
shell.openPath(filePath);
} catch (error) {
console.error("Failed to open file:", error);
}
shell.openPath(filePath);
} catch (error) {
console.error("Failed to open file:", error);
} else {
console.warn("File links are not supported on mobile.");
}
} else {
window.open(url, "_blank", "noopener,noreferrer");

25
main.ts
View File

@@ -1,6 +1,4 @@
import { App, Plugin, PluginSettingTab, Setting, MarkdownRenderer } from 'obsidian';
const { shell } = require('electron');
import { App, Plugin, PluginSettingTab, Setting, MarkdownRenderer, Platform } from 'obsidian';
interface MenuPluginSettings {
mySetting: string;
@@ -216,14 +214,21 @@ export default class MenuPlugin extends Plugin {
a.addEventListener('click', (e) => {
e.preventDefault();
if (url.startsWith('file://')) {
try {
let filePath = decodeURIComponent(url.substring(7));
if (filePath.startsWith('/') && filePath.charAt(2) === ':') {
filePath = filePath.substring(1);
if (Platform.isDesktop) {
try {
const { shell } = require('electron');
let filePath = decodeURIComponent(url.substring(7));
if (filePath.startsWith('/') && filePath.charAt(2) === ':') {
filePath = filePath.substring(1);
}
shell.openPath(filePath);
} catch (error) {
console.error('Failed to open file:', error);
}
shell.openPath(filePath);
} catch (error) {
console.error('Failed to open file:', error);
} else {
console.warn('File links are not supported on mobile.');
// Optionally show a notice to the user
// new Notice('File links are not supported on this device.');
}
} else {
window.open(url, '_blank', 'noopener,noreferrer');