Skip to content

Commit

Permalink
feat: Parallelize loadInstanceOptionsFromStacks queries
Browse files Browse the repository at this point in the history
We want to optimize the flagship app's startup time and this method is
in the critical path

By parallelizing those two queries we expect to redue this method's
execution duration
  • Loading branch information
Ldoppea authored and paultranvan committed Nov 29, 2024
1 parent ee053c8 commit 55dd291
Show file tree
Hide file tree
Showing 3 changed files with 143 additions and 17 deletions.
20 changes: 10 additions & 10 deletions docs/api/cozy-client/classes/CozyClient.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ Cozy-Client will automatically call `this.login()` if provided with a token and

*Defined in*

[packages/cozy-client/src/CozyClient.js:1832](https://github.com/cozy/cozy-client/blob/master/packages/cozy-client/src/CozyClient.js#L1832)
[packages/cozy-client/src/CozyClient.js:1834](https://github.com/cozy/cozy-client/blob/master/packages/cozy-client/src/CozyClient.js#L1834)

***

Expand Down Expand Up @@ -123,7 +123,7 @@ Cozy-Client will automatically call `this.login()` if provided with a token and

*Defined in*

[packages/cozy-client/src/CozyClient.js:1830](https://github.com/cozy/cozy-client/blob/master/packages/cozy-client/src/CozyClient.js#L1830)
[packages/cozy-client/src/CozyClient.js:1832](https://github.com/cozy/cozy-client/blob/master/packages/cozy-client/src/CozyClient.js#L1832)

***

Expand Down Expand Up @@ -955,7 +955,7 @@ extract the value corresponding to the given `key`

*Defined in*

[packages/cozy-client/src/CozyClient.js:1856](https://github.com/cozy/cozy-client/blob/master/packages/cozy-client/src/CozyClient.js#L1856)
[packages/cozy-client/src/CozyClient.js:1858](https://github.com/cozy/cozy-client/blob/master/packages/cozy-client/src/CozyClient.js#L1858)

***

Expand Down Expand Up @@ -1594,7 +1594,7 @@ This method will reset the query state to its initial state and refetch it.

*Defined in*

[packages/cozy-client/src/CozyClient.js:1885](https://github.com/cozy/cozy-client/blob/master/packages/cozy-client/src/CozyClient.js#L1885)
[packages/cozy-client/src/CozyClient.js:1887](https://github.com/cozy/cozy-client/blob/master/packages/cozy-client/src/CozyClient.js#L1887)

***

Expand Down Expand Up @@ -1652,7 +1652,7 @@ save the new resulting settings into database

*Defined in*

[packages/cozy-client/src/CozyClient.js:1873](https://github.com/cozy/cozy-client/blob/master/packages/cozy-client/src/CozyClient.js#L1873)
[packages/cozy-client/src/CozyClient.js:1875](https://github.com/cozy/cozy-client/blob/master/packages/cozy-client/src/CozyClient.js#L1875)

***

Expand Down Expand Up @@ -1701,7 +1701,7 @@ Saves multiple documents in one batch

*Defined in*

[packages/cozy-client/src/CozyClient.js:1815](https://github.com/cozy/cozy-client/blob/master/packages/cozy-client/src/CozyClient.js#L1815)
[packages/cozy-client/src/CozyClient.js:1817](https://github.com/cozy/cozy-client/blob/master/packages/cozy-client/src/CozyClient.js#L1817)

***

Expand All @@ -1725,7 +1725,7 @@ set some data in the store.

*Defined in*

[packages/cozy-client/src/CozyClient.js:1788](https://github.com/cozy/cozy-client/blob/master/packages/cozy-client/src/CozyClient.js#L1788)
[packages/cozy-client/src/CozyClient.js:1790](https://github.com/cozy/cozy-client/blob/master/packages/cozy-client/src/CozyClient.js#L1790)

***

Expand All @@ -1749,7 +1749,7 @@ we manually call the links onLogin methods

*Defined in*

[packages/cozy-client/src/CozyClient.js:1829](https://github.com/cozy/cozy-client/blob/master/packages/cozy-client/src/CozyClient.js#L1829)
[packages/cozy-client/src/CozyClient.js:1831](https://github.com/cozy/cozy-client/blob/master/packages/cozy-client/src/CozyClient.js#L1831)

***

Expand All @@ -1773,7 +1773,7 @@ At any time put an error function

*Defined in*

[packages/cozy-client/src/CozyClient.js:1801](https://github.com/cozy/cozy-client/blob/master/packages/cozy-client/src/CozyClient.js#L1801)
[packages/cozy-client/src/CozyClient.js:1803](https://github.com/cozy/cozy-client/blob/master/packages/cozy-client/src/CozyClient.js#L1803)

***

Expand Down Expand Up @@ -1849,7 +1849,7 @@ Contains the fetched token and the client information. These should be stored an

*Defined in*

[packages/cozy-client/src/CozyClient.js:1808](https://github.com/cozy/cozy-client/blob/master/packages/cozy-client/src/CozyClient.js#L1808)
[packages/cozy-client/src/CozyClient.js:1810](https://github.com/cozy/cozy-client/blob/master/packages/cozy-client/src/CozyClient.js#L1810)

***

Expand Down
124 changes: 124 additions & 0 deletions docs/offline/updateDoc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@

```mermaid
---
title: Offline query from WebApp
---
sequenceDiagram
participant WebApp
participant CC_WebApp as CC WebApp
participant Proxy as HTTP Proxy
participant AA
participant CC_AA as CC AA
participant PouchDB
WebApp->>CC_WebApp: client.query
CC_WebApp->>CC_WebApp: check link
CC_WebApp->>Proxy: request /pouch
Proxy->>AA: requestPouch
AA->>CC_AA: client.query
CC_AA->>CC_AA: check link
CC_AA->>PouchDB: query
CC_AA->>CC_WebApp: data
CC_AA->>CC_AA: update store
CC_WebApp->>CC_WebApp: update store
```

```mermaid
---
title: Update / Create Doc offline from WebApp
---
sequenceDiagram
participant WebApp
participant CC_WebApp as CC WebApp
participant Proxy as HTTP Proxy
participant AA
participant CC_AA as CC AA
participant PouchDB
WebApp->>CC_WebApp: save doc
CC_WebApp->>CC_WebApp: check link
CC_WebApp->>Proxy: request /pouch
Proxy->>AA: requestPouch
AA->>CC_AA: client.save
CC_AA->>CC_AA: check link
CC_AA->>PouchDB: write
CC_AA->>CC_WebApp: ok
CC_AA->>CC_AA: update store
CC_WebApp->>CC_WebApp: update store
```

```mermaid
---
title: Update / Create Doc from AA
---
sequenceDiagram
participant WebAppOff as WebApp Offline
participant CC_WebApp as CC WebApp
participant Proxy as HTTP Proxy
participant AA
participant CC_AA as CC AA
participant PouchDB
AA->>CC_AA: save doc
CC_AA->>CC_AA: check link
CC_AA->>PouchDB: write
CC_AA->>Proxy: realtime event
CC_AA->>CC_AA: update store
Proxy->>CC_WebApp: realtime event
CC_WebApp->>CC_WebApp: udpate store
```

```mermaid
---
title: Reconciliate online/offline changes
---
sequenceDiagram
participant WebApp
participant CC_WebApp as CC WebApp
participant Proxy as HTTP Proxy
participant CC_AA as CC AA
participant PouchDB
participant Stack
participant CouchDB
CC_AA->>PouchDB: offline writes
Stack->>CouchDB: update doc
Stack->>Stack: update event
CC_AA->>CC_AA: turns online
CC_AA->>Stack: sync on _changes
Stack->>CouchDB: write changes
CC_AA->>PouchDB: Write changes
CC_AA->>Proxy: update event
CC_AA->>CC_AA: update store
Proxy->>CC_WebApp: update event
CC_WebApp->>CC_WebApp: udpate store
```

```mermaid
---
title: Online changes
---
sequenceDiagram
participant CC_WebApp as CC WebApp
participant Proxy as HTTP Proxy
participant CC_AA as CC AA
participant PouchDB
participant Stack
participant CouchDB
Stack->>CouchDB: update doc
Stack->>Proxy: update event
Proxy->>CC_WebApp: update event
Proxy->>CC_AA: update event
CC_AA->>CC_AA: update store
CC_WebApp->>CC_WebApp: update store
CC_AA->>Stack: sync on _changes
CC_AA->>PouchDB: Write changes
CC_AA->>CC_AA: update store
```
16 changes: 9 additions & 7 deletions packages/cozy-client/src/CozyClient.js
Original file line number Diff line number Diff line change
Expand Up @@ -1761,16 +1761,18 @@ instantiation of the client.`
* @returns {Promise<void>}
*/
async loadInstanceOptionsFromStack() {
const { data } = await this.query(
Q('io.cozy.settings').getById('io.cozy.settings.capabilities')
)
const results = await Promise.all([
this.query(
Q('io.cozy.settings').getById('io.cozy.settings.capabilities')
),
this.query(Q('io.cozy.settings').getById('io.cozy.settings.instance'))
])

const { data: instanceData } = await this.query(
Q('io.cozy.settings').getById('io.cozy.settings.instance')
)
const { data: capabilitiesData } = results[0]
const { data: instanceData } = results[1]

this.instanceOptions = {
capabilities: data,
capabilities: capabilitiesData,
locale: instanceData.locale,
tracking: instanceData.tracking
}
Expand Down

0 comments on commit 55dd291

Please sign in to comment.