All files / client/methods sharefolder.js

93.75% Statements 15/16
75% Branches 3/4
100% Functions 3/3
93.75% Lines 15/16
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            15x   19x           4x 4x 4x   3x 2x 2x   2x 2x 2x 2x   2x       2x       2x    
/* @flow */
 
import invariant from "invariant";
import type { MethodApi } from "../types";
import { isEmail } from "../../utils";
 
const permissionsMap = { view: 0, edit: 7 };
 
export default ({ client }: MethodApi) => (
  folderid: number,
  mail: string,
  access: "view" | "edit" = "view",
  message: ?string = null
): Promise<boolean> => {
  invariant(typeof folderid === "number", "`folderid` must be number.");
  invariant(folderid !== 0, "`folderid` cannot be 0.");
  invariant(["view", "edit"].indexOf(access) != -1, "`permissions` can be either `view` or `edit`.");
 
  invariant(mail, "`mail` is required.");
  invariant(typeof mail === "string", "`mail` is required.");
  invariant(isEmail(mail), "`mail` must be either number or a valid mail address.");
 
  let params = {};
  params.folderid = folderid;
  params.permissions = permissionsMap[access];
  params.mail = mail;
 
  Iif (message) {
    params.message = message;
  }
 
  return client
    .api("sharefolder", {
      params: params
    })
    .then(() => true);
};