diff --git a/src/services/api.ts b/src/services/api.ts index ba36294..4809013 100644 --- a/src/services/api.ts +++ b/src/services/api.ts @@ -322,14 +322,15 @@ export class API implements IAPI { return this.#api.post('/HolidayMode/Update', postData) } - public async setLanguage(language: string): Promise { - const { data: didLanguageChange } = await this.#setLanguage({ - postData: { language: this.#getLanguageCode(language) }, - }) - if (didLanguageChange) { - this.language = language + public async setLanguage(language: string): Promise { + if (language !== this.language) { + const { data: hasLanguageChanged } = await this.updateLanguage({ + postData: { language: this.#getLanguageCode(language) }, + }) + if (hasLanguageChanged) { + this.language = language + } } - return didLanguageChange } public async setPower({ @@ -340,6 +341,14 @@ export class API implements IAPI { return this.#api.post('/Device/Power', postData) } + public async updateLanguage({ + postData, + }: { + postData: { language: Language } + }): Promise<{ data: boolean }> { + return this.#api.post('/User/UpdateLanguage', postData) + } + async #authenticate({ password, username, @@ -450,14 +459,6 @@ export class API implements IAPI { } } - async #setLanguage({ - postData, - }: { - postData: { language: Language } - }): Promise<{ data: boolean }> { - return this.#api.post('/User/UpdateLanguage', postData) - } - #setOptionalProperties({ language, password, diff --git a/src/services/interfaces.ts b/src/services/interfaces.ts index 9dafa4d..94705e8 100644 --- a/src/services/interfaces.ts +++ b/src/services/interfaces.ts @@ -1,4 +1,4 @@ -import type { DeviceType } from '../enums.js' +import type { DeviceType, Language } from '../enums.js' import type { Building, EnergyData, @@ -143,11 +143,15 @@ export interface IAPI { }: { postData: HolidayModePostData }) => Promise<{ data: FailureData | SuccessData }> - setLanguage: (language: string) => Promise setPower: ({ postData, }: { postData: SetPowerPostData }) => Promise<{ data: boolean }> + updateLanguage: ({ + postData, + }: { + postData: { language: Language } + }) => Promise<{ data: boolean }> onSync?: () => Promise }