mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-09-21 15:56:10 +08:00
perf(threads): Cache aliases to avoid GC thrashing in isMeAccount
This commit is contained in:
parent
40bfab40c0
commit
1ca2e930ef
|
@ -133,9 +133,13 @@ describe "Contact", ->
|
||||||
expect(c1.isMe()).toBe(true)
|
expect(c1.isMe()).toBe(true)
|
||||||
|
|
||||||
it "also matches any aliases you've created", ->
|
it "also matches any aliases you've created", ->
|
||||||
|
spyOn(AccountStore, 'aliases').andReturn [
|
||||||
|
new Contact(name: 'Ben Other', email: 'ben22@nylas.com', accountId: TEST_ACCOUNT_ID)
|
||||||
|
]
|
||||||
spyOn(AccountStore, 'accounts').andReturn [
|
spyOn(AccountStore, 'accounts').andReturn [
|
||||||
new Account
|
new Account
|
||||||
provider: "gmail"
|
provider: "gmail"
|
||||||
|
accountId: TEST_ACCOUNT_ID
|
||||||
aliases: ["Ben Other <ben22@nylas.com>"]
|
aliases: ["Ben Other <ben22@nylas.com>"]
|
||||||
emailAddress: 'ben@nylas.com'
|
emailAddress: 'ben@nylas.com'
|
||||||
]
|
]
|
||||||
|
|
|
@ -101,10 +101,9 @@ class Contact extends Model
|
||||||
for account in AccountStore.accounts()
|
for account in AccountStore.accounts()
|
||||||
if Utils.emailIsEquivalent(@email, account.emailAddress)
|
if Utils.emailIsEquivalent(@email, account.emailAddress)
|
||||||
return account
|
return account
|
||||||
|
for alias in AccountStore.aliases()
|
||||||
for alias in account.aliases
|
if Utils.emailIsEquivalent(@email, alias.email)
|
||||||
if Utils.emailIsEquivalent(@email, Contact.fromString(alias).email)
|
return AccountStore.accountForId(alias.accountId)
|
||||||
return account
|
|
||||||
|
|
||||||
return null
|
return null
|
||||||
|
|
||||||
|
|
|
@ -147,14 +147,15 @@ class AccountStore
|
||||||
@_cachedGetter "accountForId:#{id}", => _.findWhere(@_accounts, {id})
|
@_cachedGetter "accountForId:#{id}", => _.findWhere(@_accounts, {id})
|
||||||
|
|
||||||
aliases: =>
|
aliases: =>
|
||||||
aliases = []
|
@_cachedGetter "aliases", =>
|
||||||
for acc in @_accounts
|
aliases = []
|
||||||
aliases.push(acc.me())
|
for acc in @_accounts
|
||||||
for alias in acc.aliases
|
aliases.push(acc.me())
|
||||||
aliasContact = acc.meUsingAlias(alias)
|
for alias in acc.aliases
|
||||||
aliasContact.isAlias = true
|
aliasContact = acc.meUsingAlias(alias)
|
||||||
aliases.push(aliasContact)
|
aliasContact.isAlias = true
|
||||||
return aliases
|
aliases.push(aliasContact)
|
||||||
|
return aliases
|
||||||
|
|
||||||
aliasesFor: (accountsOrIds) =>
|
aliasesFor: (accountsOrIds) =>
|
||||||
ids = accountsOrIds.map (accOrId) ->
|
ids = accountsOrIds.map (accOrId) ->
|
||||||
|
|
Loading…
Reference in a new issue