@@ -16,7 +16,9 @@ import {
1616 updateAccount ,
1717 updateAlias ,
1818 createAlias ,
19- createCustomDomain
19+ createCustomDomain ,
20+ updateCustomDomain ,
21+ logError
2022} from './../utils/ipc' ;
2123import { appDomain , SectionType } from '../utils/const' ;
2224import { defineLastDeviceActivity } from '../utils/TimeUtils' ;
@@ -53,17 +55,17 @@ const formatDevicesData = devices => {
5355const checkAddressesAndDomains = async addresses => {
5456 if ( ! addresses ) return ;
5557
56- const aliasinDb = await getAlias ( { } ) ;
57- const customDomainsinDb = await getCustomDomain ( { } ) ;
58+ const aliasinDb = await getAlias ( { accountId : myAccount . id } ) ;
59+ const customDomainsinDb = await getCustomDomain ( { accountId : myAccount . id } ) ;
5860
59- const aliasesInApi = addresses
61+ let aliasesInApi = addresses
6062 . map ( address => {
6163 const domainName = address . domain . name ;
6264 return address . aliases . map ( alias => {
6365 return {
6466 name : alias . name ,
65- rowid : alias . addressId ,
66- active : alias . status ,
67+ rowId : alias . addressId ,
68+ active : alias . status ? true : false ,
6769 domain : domainName
6870 } ;
6971 } ) ;
@@ -72,77 +74,71 @@ const checkAddressesAndDomains = async addresses => {
7274 const domainsInApi = addresses
7375 . map ( address => address . domain )
7476 . filter ( domain => domain . name !== appDomain ) ;
77+ const domainsToCreate = [ ] ;
78+ const domainsToUpdate = [ ] ;
79+ const myApiDomains = new Set ( ) ;
80+ for ( const apiDomain of domainsInApi ) {
81+ myApiDomains . add ( apiDomain . name ) ;
7582
76- if ( domainsInApi . length !== customDomainsinDb . length ) {
77- if ( domainsInApi . length > customDomainsinDb . length ) {
78- await Promise . all (
79- domainsInApi . map ( async domain => {
80- const customDomainsinDbExist = customDomainsinDb . find (
81- domainInDb => domain . name === domainInDb . name
82- ) ;
83- if ( ! customDomainsinDbExist ) {
84- const params = {
85- name : domain . name ,
86- validated : domain . confirmed === 1
87- } ;
88- await createCustomDomain ( params ) ;
89- }
90- } )
91- ) ;
92- } else if ( customDomainsinDb . length > domainsInApi . length ) {
93- const customDomainsToDelete = customDomainsinDb
94- . filter ( domain => {
95- const domainsInApiExist = domainsInApi . map (
96- domainInApi => domainInApi . name === domain . name
97- ) ;
98- return ! domainsInApiExist ;
99- } )
100- . map ( domain => domain . name ) ;
101- await deleteCustomDomains ( customDomainsToDelete . filter ( e => e ) ) ;
83+ const localDomain = customDomainsinDb . find (
84+ domain => apiDomain . name === domain . name
85+ ) ;
86+ if ( ! localDomain ) {
87+ domainsToCreate . push ( {
88+ ...apiDomain ,
89+ accountId : myAccount . accountId
90+ } ) ;
91+ } else if ( localDomain . validated !== apiDomain . confirmed ) {
92+ domainsToUpdate . push ( {
93+ name : localDomain . name ,
94+ validated : apiDomain . confirmed ,
95+ accountId : myAccount . id
96+ } ) ;
10297 }
10398 }
99+ const domainsToDelete = customDomainsinDb
100+ . filter ( domain => ! myApiDomains . has ( domain . name ) )
101+ . map ( domain => domain . name ) ;
104102
105- if ( aliasesInApi . length !== aliasinDb . length ) {
106- if ( aliasesInApi . length > aliasinDb . length ) {
107- await Promise . all (
108- aliasesInApi . map ( async aliasInApi => {
109- const aliasInDbExist = aliasinDb . find (
110- aliasInDB => aliasInDB . rowid === aliasInApi . rowid
111- ) ;
112- if ( ! aliasInDbExist ) {
113- const alias = {
114- rowId : aliasInApi . rowid ,
115- name : aliasInApi . name ,
116- domain :
117- aliasInApi . domain === appDomain ? null : aliasInApi . domain ,
118- active : aliasInApi . active === 1
119- } ;
120- await createAlias ( alias ) ;
121- } else if (
122- aliasInDbExist &&
123- // eslint-disable-next-line eqeqeq
124- aliasInDbExist . active != aliasInApi . active
125- ) {
126- // make an update
127- await updateAlias ( {
128- rowId : aliasInDbExist . rowId ,
129- active : ! aliasInDbExist . active
130- } ) ;
131- }
132- } )
133- ) ;
134- } else if ( aliasinDb . length > aliasesInApi . length ) {
135- const aliasToDelete = aliasinDb
136- . filter ( aliasInDB => {
137- const aliasInApiExist = aliasesInApi . find (
138- aliasInApi => aliasInApi . rowid === aliasInDB . rowId
139- ) ;
140- return ! aliasInApiExist ;
141- } )
142- . map ( alias => alias . rowId ) ;
143- await deleteAliases ( { rowIds : aliasToDelete . filter ( e => e ) } ) ;
103+ const aliasesToUpdate = [ ] ;
104+ const aliasesToDelete = [ ] ;
105+ for ( const localAlias of aliasinDb ) {
106+ if ( localAlias . domain !== appDomain && myApiDomains . has ( localAlias . domain ) )
107+ return ;
108+ const apiAlias = aliasesInApi . find (
109+ alias => localAlias . rowId === alias . rowId
110+ ) ;
111+ if ( ! apiAlias ) {
112+ aliasesToDelete . push ( localAlias . rowId ) ;
113+ } else if ( localAlias . active !== apiAlias . active ) {
114+ aliasesToUpdate . push ( {
115+ rowId : localAlias . rowId ,
116+ active : apiAlias . active ,
117+ accountId : myAccount . id
118+ } ) ;
144119 }
120+ aliasesInApi = aliasesInApi . filter (
121+ alias => alias . rowId !== localAlias . rowId
122+ ) ;
145123 }
124+ const aliasesToCreate = aliasesInApi . map ( alias => ( {
125+ ...alias ,
126+ domain : alias . domain === appDomain ? null : alias . domain ,
127+ accountId : myAccount . id
128+ } ) ) ;
129+
130+ await Promise . all (
131+ [
132+ domainsToCreate . map ( createCustomDomain ) ,
133+ domainsToUpdate . map ( updateCustomDomain ) ,
134+ domainsToDelete . length > 0 ? deleteCustomDomains ( domainsToDelete ) : [ ] ,
135+ aliasesToCreate . map ( createAlias ) ,
136+ aliasesToUpdate . map ( updateAlias ) ,
137+ aliasesToDelete . length > 0
138+ ? deleteAliases ( { rowIds : aliasesToDelete , accountId : myAccount . id } )
139+ : [ ]
140+ ] . flat ( )
141+ ) ;
146142} ;
147143
148144const deleteDeviceData = async ( onUpdateApp , onClickSection ) => {
@@ -190,7 +186,11 @@ const mapDispatchToProps = (dispatch, ownProps) => {
190186 dispatch ( reloadAccounts ( ) ) ;
191187 }
192188
193- await checkAddressesAndDomains ( addresses ) ; //syncro
189+ try {
190+ await checkAddressesAndDomains ( addresses ) ;
191+ } catch ( ex ) {
192+ logError ( ex . stack ) ;
193+ }
194194
195195 const aliases = addresses . reduce ( ( result , domainWithAliases ) => {
196196 const myAliases = domainWithAliases . aliases . map ( alias => {
0 commit comments