chat/modules/OTRHelpers.jsm
author Jorg K <jorgk@jorgk.com>
Sat, 05 Oct 2019 16:18:07 +0200
changeset 35909 9ba6a8a5bcb8611538067db06d4544b1c5bdad36
parent 35824 fda8338f7b7782a9a2ffcc8e260290395b055858
permissions -rw-r--r--
No bug - Pin mozilla-esr68 (FIREFOX_68_1_0esr_RELEASE, THUNDERBIRD_68_VERBRANCH) for release. a=jorgk

/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

const { OS } = ChromeUtils.import("resource://gre/modules/osfile.jsm");
const { Services } = ChromeUtils.import("resource:///modules/imServices.jsm");

var OTRHelpers = {
  profilePath(filename) {
    return OS.Path.join(OS.Constants.Path.profileDir, filename);
  },

  *getAccounts() {
    let accounts = Services.accounts.getAccounts();
    while (accounts.hasMoreElements()) {
      yield accounts.getNext();
    }
  },

  readTextFile(filename) {
    let decoder = new TextDecoder();
    return OS.File.read(filename).then(function(array) {
      return decoder.decode(array);
    });
  },

  writeTextFile(filename, data) {
    let encoder = new TextEncoder();
    let array = encoder.encode(data);
    // https://dutherenverseauborddelatable.wordpress.com/2014/02/05/is-my-data-on-the-disk-safety-properties-of-os-file-writeatomic/
    return OS.File.writeAtomic(filename, array, { tmpPath: `${filename}.tmp` });
  },
};

// exports

this.EXPORTED_SYMBOLS = ["OTRHelpers"];