File: files-api.js

package info (click to toggle)
xnote 4.1.12-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 788 kB
  • sloc: javascript: 5,779; makefile: 22
file content (51 lines) | stat: -rw-r--r-- 2,184 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
var { ExtensionCommon } = ChromeUtils.import("resource://gre/modules/ExtensionCommon.jsm");//,
//  { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm"),
  var Services = globalThis.Services || ChromeUtils.import("resource://gre/modules/Services.jsm").Services;
  win = Services.wm.getMostRecentWindow("mail:3pane");



var xnotefiles = class extends ExtensionCommon.ExtensionAPI {
  getAPI(context) {
    return {
      xnotefiles: {
        selectDirectory: async function (window, startDirectory, title) {
          let domWindow = window;
          if (domWindow == null) {
            domWindow = Services.wm.getMostRecentWindow(null);
          }
          let fp = Components.classes["@mozilla.org/filepicker;1"]
            .createInstance(Components.interfaces.nsIFilePicker);
          fp.init(domWindow, title, fp.modeGetFolder);
          let FileUtils = ChromeUtils.import("resource://gre/modules/FileUtils.jsm").FileUtils;
          let startDir = new FileUtils.File(startDirectory);
          fp.displayDirectory = startDir;
          return new Promise(function (resolve, reject) {
            fp.open(rv => {
              if (rv === fp.returnOK) {
                resolve(fp.file.path);
              }
            });
          })
        },

        getProfileDirectory: async function () {
          var directoryService = Components.classes['@mozilla.org/file/directory_service;1']
            .getService(Components.interfaces.nsIProperties);
          let profileDir = directoryService.get('ProfD', Components.interfaces.nsIFile);
          //     console.debug(`getProfileDir returns: ${profileDir.path}`);
          return profileDir.path;
        },

        appendRelativePath: async function (path, extension) {
          let FileUtils = ChromeUtils.import("resource://gre/modules/FileUtils.jsm").FileUtils;
          var result = new FileUtils.File(path);
          result.appendRelativePath(extension);
          //      console.debug(result);
          //      console.debug(`appendRelativePath result: ${result.path}`);
          return result.path;
        }
      }
    }
  };
}