move get all languages to store

This commit is contained in:
Jesper Møller Jensen
2023-01-18 04:30:05 +01:00
parent 4c8dd12e49
commit 1fd42e5894
2 changed files with 23 additions and 10 deletions

View File

@@ -1,7 +1,7 @@
import { map, Observable } from 'rxjs';
import { UmbDataStoreBase } from '../../../core/stores/store';
import type { DataTypeDetails, LanguageDetails } from '@umbraco-cms/models';
import { DataTypeResource, FolderTreeItem } from '@umbraco-cms/backend-api';
import { DataTypeResource, FolderTreeItem, LanguageResource } from '@umbraco-cms/backend-api';
import { tryExecuteAndNotify } from '@umbraco-cms/resources';
export type UmbLanguageStoreItemType = LanguageDetails;
@@ -35,6 +35,16 @@ export class UmbLanguageStore extends UmbDataStoreBase<UmbLanguageStoreItemType>
return this.items.pipe(map((dataTypes) => dataTypes.find((dataType) => dataType.key === key) || null));
}
getAll(): Observable<Array<LanguageDetails>> {
tryExecuteAndNotify(this.host, LanguageResource.getLanguage({ skip: 0, take: 100 })).then(({ data }) => {
if (data) {
this.updateItems(data.items as Array<LanguageDetails>);
}
});
return this.items;
}
save(): Promise<void> {
return new Promise((resolve, reject) => '');
}

View File

@@ -12,6 +12,7 @@ import {
UmbTableItem,
UmbTableSelectedEvent,
} from 'src/backoffice/shared/components/table';
import { UmbLanguageStore } from '../../language.store';
import '../language/language-workspace.element';
import './language-root-table-delete-column-layout.element';
@@ -109,20 +110,22 @@ export class UmbLanguageRootWorkspaceElement extends UmbLitElement {
@state()
private _tableItems: Array<UmbTableItem> = [];
private _languageStore?: UmbLanguageStore;
constructor() {
super();
this._getLanguageData();
this.consumeContext('umbLanguageStore', (instance) => {
this._languageStore = instance;
this._observeLanguages();
});
}
//TODO: Move this code to the language store
private async _getLanguageData() {
const { data } = await tryExecuteAndNotify(this, LanguageResource.getLanguage({ skip: 0, take: 10 }));
if (data) {
this._languages = data.items as Array<LanguageDetails>;
this._createTableItems(this._languages);
console.log('LANGS', this._languages);
}
private _observeLanguages() {
this._languageStore?.getAll().subscribe((languages) => {
this._languages = languages;
this._createTableItems(languages);
});
}
private _createTableItems(languages: Array<Language>) {