Skip to content

Commit

Permalink
Fixes to avoid repeated API calls on startup
Browse files Browse the repository at this point in the history
  • Loading branch information
DavidMStraub committed Sep 19, 2022
1 parent 2efdcf6 commit 4d1d33b
Show file tree
Hide file tree
Showing 7 changed files with 56 additions and 13 deletions.
4 changes: 2 additions & 2 deletions src/GrampsJs.js
Original file line number Diff line number Diff line change
Expand Up @@ -1008,7 +1008,8 @@ export class GrampsJs extends LitElement {

_loadStrings(strings, lang) {
this._loadingStrings = true
apiPost(`/api/translations/${lang}`, {strings}).then(data => {
apiPost(`/api/translations/${lang}`, {strings}, true, false).then(data => {
this._loadingStrings = false
if ('data' in data) {
this._strings = data.data.reduce(
(obj, item) =>
Expand All @@ -1026,7 +1027,6 @@ export class GrampsJs extends LitElement {
this._showError(data.error)
}
})
this._loadingStrings = false
}

_showError(msg) {
Expand Down
25 changes: 19 additions & 6 deletions src/api.js
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,13 @@ export async function apiGet(endpoint, isJson = true) {
}
}

async function apiPutPost(method, endpoint, payload, isJson = true) {
async function apiPutPost(
method,
endpoint,
payload,
isJson = true,
dbChanged = true
) {
const accessToken = localStorage.getItem('access_token')
const headers = {Accept: 'application/json'}
if (accessToken !== null) {
Expand Down Expand Up @@ -243,9 +249,11 @@ async function apiPutPost(method, endpoint, payload, isJson = true) {
if (resp.status !== 201 && resp.status !== 200) {
throw new Error(`Error ${resp.status}`)
}
window.dispatchEvent(
new CustomEvent('db:changed', {bubbles: true, composed: true})
)
if (dbChanged) {
window.dispatchEvent(
new CustomEvent('db:changed', {bubbles: true, composed: true})
)
}
try {
return {
data: await resp.json(),
Expand All @@ -265,8 +273,13 @@ export async function apiPut(endpoint, payload) {
return apiPutPost('PUT', endpoint, payload)
}

export async function apiPost(endpoint, payload, isJson = true) {
return apiPutPost('POST', endpoint, payload, isJson)
export async function apiPost(
endpoint,
payload,
isJson = true,
dbChanged = true
) {
return apiPutPost('POST', endpoint, payload, isJson, dbChanged)
}

export function getExporterUrl(id, options) {
Expand Down
6 changes: 5 additions & 1 deletion src/components/GrampsjsConnectedComponent.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,11 @@ export class GrampsjsConnectedComponent extends GrampsjsTranslateMixin(

update(changed) {
super.update(changed)
if (changed.has('strings') && '__lang__' in this.strings) {
if (
changed.has('strings') &&
'__lang__' in this.strings &&
changed.get('strings')?.__lang__ !== this.strings?.__lang__
) {
this._updateData()
}
}
Expand Down
6 changes: 6 additions & 0 deletions src/views/GrampsjsView.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ export class GrampsjsView extends GrampsjsTranslateMixin(LitElement) {
error: {type: Boolean},
settings: {type: Object},
_errorMessage: {type: String},
_hasFirstUpdated: {type: Boolean},
}
}

Expand All @@ -46,6 +47,7 @@ export class GrampsjsView extends GrampsjsTranslateMixin(LitElement) {
this.error = false
this.settings = {}
this._errorMessage = ''
this._hasFirstUpdated = false
}

render() {
Expand All @@ -61,6 +63,10 @@ export class GrampsjsView extends GrampsjsTranslateMixin(LitElement) {
return this.renderContent()
}

firstUpdated() {
this._hasFirstUpdated = true
}

update(changed) {
super.update(changed)
if (changed.has('loading')) {
Expand Down
8 changes: 7 additions & 1 deletion src/views/GrampsjsViewExport.js
Original file line number Diff line number Diff line change
Expand Up @@ -132,9 +132,15 @@ export class GrampsjsViewExport extends GrampsjsView {
connectedCallback() {
super.connectedCallback()
window.addEventListener('language:changed', e =>
this._fetchData(e.detail.lang)
this._handleLanguageChanged(e)
)
}

_handleLanguageChanged(e) {
if (this._hasFirstUpdated) {
this._fetchData(e.detail.lang)
}
}
}

window.customElements.define('grampsjs-view-export', GrampsjsViewExport)
12 changes: 10 additions & 2 deletions src/views/GrampsjsViewRecent.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,25 @@ export class GrampsjsViewRecentObject extends GrampsjsView {
window.addEventListener('storage', this._boundStorageHandler)
this._handleStorage()
window.addEventListener('language:changed', e =>
this._fetchData(e.detail.lang)
this._handleLanguageChanged(e)
)
}

_handleLanguageChanged(e) {
if (this._hasFirstUpdated) {
this._fetchData(e.detail.lang)
}
}

_handleStorage() {
const recentObjects = JSON.parse(
window.localStorage.getItem('recentObjects')
)
if (recentObjects !== undefined && recentObjects !== null) {
this._data = recentObjects
this._fetchData(this.strings.__lang__)
if (this._hasFirstUpdated) {
this._fetchData(this.strings.__lang__)
}
}
}

Expand Down
8 changes: 7 additions & 1 deletion src/views/GrampsjsViewReports.js
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,15 @@ export class GrampsjsViewReports extends GrampsjsView {
connectedCallback() {
super.connectedCallback()
window.addEventListener('language:changed', e =>
this._fetchData(e.detail.lang)
this._handleLanguageChanged(e)
)
}

_handleLanguageChanged(e) {
if (this._hasFirstUpdated) {
this._fetchData(e.detail.lang)
}
}
}

window.customElements.define('grampsjs-view-reports', GrampsjsViewReports)

0 comments on commit 4d1d33b

Please sign in to comment.