You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-desktop/js/models/profile.js

84 lines
1.9 KiB
JavaScript

/* global storage, _ */
/* global storage: false */
/* eslint-disable more/no-then */
// eslint-disable-next-line func-names
(function() {
'use strict';
window.Whisper = window.Whisper || {};
const PROFILE_ID = 'profiles';
storage.getProfile = number => {
const profiles = storage.get(PROFILE_ID, {});
return profiles[number] || null;
}
storage.saveProfile = async (number, profile) => {
const profiles = storage.get(PROFILE_ID, {});
const storedProfile = profiles[number];
// Only store the profile if we have a different object
if (storedProfile && _.isEqual(storedProfile, profile)) {
return;
}
window.log.info('adding profile ', profile, 'for ', number);
await storage.put(PROFILE_ID, {
...profiles,
[number]: profile,
});
}
storage.removeProfile = async number => {
const profiles = storage.get(PROFILE_ID, {});
if (!profiles[number]) {
return;
}
delete profiles[number];
window.log.info('removing profile for ', number);
await storage.put(PROFILE_ID, profiles);
}
// Names that user can set for users
const NICKNAME_ID = 'nickname';
storage.getNickname = number => {
const nicknames = storage.get(NICKNAME_ID, {});
return nicknames[number] || null;
}
storage.saveNickname = async (number, name) => {
const nicknames = storage.get(NICKNAME_ID, {});
const storedName = nicknames[number];
// Only store the name if we have a different name
if (storedName === name) {
return;
}
window.log.info('adding nickname ', name, 'for ', number);
await storage.put(NICKNAME_ID, {
...nicknames,
[number]: name,
});
}
storage.removeNickname = async number => {
const nicknames = storage.get(NICKNAME_ID, {});
if (!nicknames[number]) {
return;
}
delete nicknames[number];
window.log.info('removing nickname for ', number);
await storage.put(NICKNAME_ID, nicknames);
}
})();