mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-11-12 04:25:31 +08:00
50 lines
1.1 KiB
Text
50 lines
1.1 KiB
Text
|
import {
|
||
|
NylasAPI,
|
||
|
NylasAPIRequest,
|
||
|
} from 'nylas-exports'
|
||
|
import RefreshingJSONCache from './refreshing-json-cache'
|
||
|
|
||
|
|
||
|
// Stores contact rankings
|
||
|
class ContactRankingsCache extends RefreshingJSONCache {
|
||
|
constructor(accountId) {
|
||
|
super({
|
||
|
key: `ContactRankingsFor${accountId}`,
|
||
|
version: 1,
|
||
|
refreshInterval: 60 * 60 * 1000 * 24, // one day
|
||
|
})
|
||
|
this._accountId = accountId
|
||
|
}
|
||
|
|
||
|
fetchData = (callback) => {
|
||
|
if (NylasEnv.inSpecMode()) return
|
||
|
|
||
|
const request = new NylasAPIRequest({
|
||
|
api: NylasAPI,
|
||
|
options: {
|
||
|
accountId: this._accountId,
|
||
|
path: "/contacts/rankings",
|
||
|
returnsModel: false,
|
||
|
},
|
||
|
})
|
||
|
|
||
|
request.run()
|
||
|
.then((json) => {
|
||
|
if (!json || !(json instanceof Array)) return
|
||
|
|
||
|
// Convert rankings into the format needed for quick lookup
|
||
|
const rankings = {}
|
||
|
for (const [email, rank] of json) {
|
||
|
rankings[email.toLowerCase()] = rank
|
||
|
}
|
||
|
callback(rankings)
|
||
|
})
|
||
|
.catch((err) => {
|
||
|
console.warn(`Request for Contact Rankings failed for
|
||
|
account ${this._accountId}. ${err}`)
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export default ContactRankingsCache
|