{"version":3,"file":"current-user.store-N0uyXnob.js","sources":["../../../src/packages/user/current-user/repository/current-user.store.ts"],"sourcesContent":["import type {\r\n\tUmbCurrentUserExternalLoginProviderModel,\r\n\tUmbCurrentUserMfaProviderModel,\r\n\tUmbCurrentUserModel,\r\n} from '../types.js';\r\nimport { UMB_CURRENT_USER_STORE_CONTEXT } from './current-user.store.token.js';\r\nimport type { UmbUserDetailModel } from '@umbraco-cms/backoffice/user';\r\nimport { UMB_USER_DETAIL_STORE_CONTEXT } from '@umbraco-cms/backoffice/user';\r\nimport { UmbContextBase } from '@umbraco-cms/backoffice/class-api';\r\nimport type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';\r\nimport { UmbArrayState, UmbObjectState } from '@umbraco-cms/backoffice/observable-api';\r\n\r\nexport class UmbCurrentUserStore extends UmbContextBase {\r\n\t#data = new UmbObjectState(undefined);\r\n\treadonly data = this.#data.asObservable();\r\n\r\n\t#mfaProviders = new UmbArrayState([], (e) => e.providerName);\r\n\treadonly mfaProviders = this.#mfaProviders.asObservable();\r\n\r\n\t#externalLoginProviders = new UmbArrayState(\r\n\t\t[],\r\n\t\t(e) => e.providerSchemeName,\r\n\t);\r\n\treadonly externalLoginProviders = this.#externalLoginProviders.asObservable();\r\n\r\n\tconstructor(host: UmbControllerHost) {\r\n\t\tsuper(host, UMB_CURRENT_USER_STORE_CONTEXT);\r\n\r\n\t\tthis.consumeContext(UMB_USER_DETAIL_STORE_CONTEXT, (instance) => {\r\n\t\t\tthis.observe(instance?.all(), (users) => this.#onUserDetailStoreUpdate(users));\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Get the current user\r\n\t * @readonly\r\n\t * @type {UmbCurrentUserModel}\r\n\t * @memberof UmbCurrentUserStore\r\n\t */\r\n\tget() {\r\n\t\treturn this.#data.getValue();\r\n\t}\r\n\r\n\t/**\r\n\t * Set the current user\r\n\t * @param {UmbCurrentUserModel} data\r\n\t * @memberof UmbCurrentUserStore\r\n\t */\r\n\tset(data: UmbCurrentUserModel) {\r\n\t\tthis.#data.setValue(data);\r\n\t}\r\n\r\n\t/**\r\n\t * Update the current user\r\n\t * @param {Partial} data\r\n\t * @memberof UmbCurrentUserStore\r\n\t */\r\n\tupdate(data: Partial) {\r\n\t\tthis.#data.update(data);\r\n\t}\r\n\r\n\t/**\r\n\t * Clear the current user\r\n\t * @memberof UmbCurrentUserStore\r\n\t */\r\n\tclear() {\r\n\t\tthis.#data.setValue(undefined);\r\n\t}\r\n\r\n\t#onUserDetailStoreUpdate = (users: Array) => {\r\n\t\tconst currentUser = this.get();\r\n\t\tif (!currentUser) return;\r\n\r\n\t\tconst updatedCurrentUser = users.find((user) => user.unique === currentUser.unique);\r\n\t\tif (!updatedCurrentUser) return;\r\n\r\n\t\tconst mappedCurrentUser: Partial = {\r\n\t\t\temail: updatedCurrentUser.email,\r\n\t\t\tuserName: updatedCurrentUser.userName,\r\n\t\t\tname: updatedCurrentUser.name,\r\n\t\t\tlanguageIsoCode: updatedCurrentUser.languageIsoCode || '', // TODO: default value?\r\n\t\t\tdocumentStartNodeUniques: updatedCurrentUser.documentStartNodeUniques,\r\n\t\t\tmediaStartNodeUniques: updatedCurrentUser.mediaStartNodeUniques,\r\n\t\t\tavatarUrls: updatedCurrentUser.avatarUrls,\r\n\t\t\tisAdmin: updatedCurrentUser.isAdmin,\r\n\t\t};\r\n\r\n\t\tthis.update(mappedCurrentUser);\r\n\t};\r\n\r\n\tsetMfaProviders(data: Array) {\r\n\t\tthis.#mfaProviders.setValue(data);\r\n\t}\r\n\r\n\tupdateMfaProvider(data: Partial) {\r\n\t\tthis.#mfaProviders.updateOne(data.providerName, data);\r\n\t}\r\n\r\n\tsetExternalLoginProviders(data: Array) {\r\n\t\tthis.#externalLoginProviders.setValue(data);\r\n\t}\r\n\r\n\tupdateExternalLoginProvider(data: Partial) {\r\n\t\tthis.#externalLoginProviders.updateOne(data.providerSchemeName, data);\r\n\t}\r\n}\r\n\r\nexport default UmbCurrentUserStore;\r\n"],"names":["UmbCurrentUserStore","UmbContextBase","host","UMB_CURRENT_USER_STORE_CONTEXT","#data","UmbObjectState","#mfaProviders","UmbArrayState","e","#externalLoginProviders","#onUserDetailStoreUpdate","users","currentUser","updatedCurrentUser","user","mappedCurrentUser","UMB_USER_DETAIL_STORE_CONTEXT","instance","data"],"mappings":";;;;AAYO,MAAMA,UAA4BC,EAAoC;AAAA,EAa5E,YAAYC,GAAyB;AACpC,UAAMA,GAAMC,CAA8B,GAbnC,KAAAC,KAAA,IAAIC,EAAgD,MAAS,GAC5D,KAAA,OAAO,KAAKD,GAAM,aAAa,GAExC,KAAAE,KAAgB,IAAIC,EAA8C,IAAI,CAACC,MAAMA,EAAE,YAAY,GAClF,KAAA,eAAe,KAAKF,GAAc,aAAa,GAExD,KAAAG,KAA0B,IAAIF;AAAA,MAC7B,CAAC;AAAA,MACD,CAACC,MAAMA,EAAE;AAAA,IACV,GACS,KAAA,yBAAyB,KAAKC,GAAwB,aAAa,GA8C5E,KAAAC,KAA2B,CAACC,MAAqC;AAC1D,YAAAC,IAAc,KAAK,IAAI;AAC7B,UAAI,CAACA,EAAa;AAEZ,YAAAC,IAAqBF,EAAM,KAAK,CAACG,MAASA,EAAK,WAAWF,EAAY,MAAM;AAClF,UAAI,CAACC,EAAoB;AAEzB,YAAME,IAAkD;AAAA,QACvD,OAAOF,EAAmB;AAAA,QAC1B,UAAUA,EAAmB;AAAA,QAC7B,MAAMA,EAAmB;AAAA,QACzB,iBAAiBA,EAAmB,mBAAmB;AAAA;AAAA,QACvD,0BAA0BA,EAAmB;AAAA,QAC7C,uBAAuBA,EAAmB;AAAA,QAC1C,YAAYA,EAAmB;AAAA,QAC/B,SAASA,EAAmB;AAAA,MAC7B;AAEA,WAAK,OAAOE,CAAiB;AAAA,IAC9B,GA5DM,KAAA,eAAeC,GAA+B,CAACC,MAAa;AAC3D,WAAA,QAAQA,GAAU,IAAI,GAAG,CAACN,MAAU,KAAKD,GAAyBC,CAAK,CAAC;AAAA,IAAA,CAC7E;AAAA,EAAA;AAAA,EAjBFP;AAAA,EAGAE;AAAA,EAGAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBA,MAAM;AACE,WAAA,KAAKL,GAAM,SAAS;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ5B,IAAIc,GAA2B;AACzB,SAAAd,GAAM,SAASc,CAAI;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQzB,OAAOA,GAAoC;AACrC,SAAAd,GAAM,OAAOc,CAAI;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOvB,QAAQ;AACF,SAAAd,GAAM,SAAS,MAAS;AAAA,EAAA;AAAA,EAG9BM;AAAA,EAqBA,gBAAgBQ,GAA6C;AACvD,SAAAZ,GAAc,SAASY,CAAI;AAAA,EAAA;AAAA,EAGjC,kBAAkBA,GAA+C;AAChE,SAAKZ,GAAc,UAAUY,EAAK,cAAcA,CAAI;AAAA,EAAA;AAAA,EAGrD,0BAA0BA,GAAuD;AAC3E,SAAAT,GAAwB,SAASS,CAAI;AAAA,EAAA;AAAA,EAG3C,4BAA4BA,GAAyD;AACpF,SAAKT,GAAwB,UAAUS,EAAK,oBAAoBA,CAAI;AAAA,EAAA;AAEtE;"}