chat/modules/OTRHelpers.jsm
author Rob Lemley <rob@thunderbird.net>
Sat, 09 Nov 2019 22:39:40 -0500
changeset 36596 c45cd28f33e2d2f7ed6e09fd14caab9be9fbdb1e
parent 35696 e5737872508567abf8b0444f43eb4ee4ce211c75
child 37037 089f6048f53fb2e990f62dd17bc7a366e7616165
permissions -rw-r--r--
Bug 1595153 - Disable Nightly builds. a=me DONTBUILD CLOSED TREE

/* 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"];