feat: role system
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import {
|
||||
authInstance,
|
||||
authStore,
|
||||
cityStore,
|
||||
languageStore,
|
||||
languageInstance,
|
||||
@@ -145,12 +146,51 @@ class CarrierStore {
|
||||
};
|
||||
};
|
||||
|
||||
private resolveCityName = (cityId: number, preferredLanguage: Language) => {
|
||||
if (!cityId) {
|
||||
return "";
|
||||
}
|
||||
|
||||
const languages: Language[] = ["ru", "en", "zh"];
|
||||
|
||||
const fromCityStorePreferred = cityStore.cities[preferredLanguage].data.find(
|
||||
(city) => city.id === cityId
|
||||
)?.name;
|
||||
if (fromCityStorePreferred) {
|
||||
return fromCityStorePreferred;
|
||||
}
|
||||
|
||||
for (const language of languages) {
|
||||
const cityName = cityStore.cities[language].data.find(
|
||||
(city) => city.id === cityId
|
||||
)?.name;
|
||||
if (cityName) {
|
||||
return cityName;
|
||||
}
|
||||
}
|
||||
|
||||
const fromMePreferred = authStore.meCities[preferredLanguage].find(
|
||||
(city) => city.city_id === cityId
|
||||
)?.name;
|
||||
if (fromMePreferred) {
|
||||
return fromMePreferred;
|
||||
}
|
||||
|
||||
for (const language of languages) {
|
||||
const cityName = authStore.meCities[language].find(
|
||||
(city) => city.city_id === cityId
|
||||
)?.name;
|
||||
if (cityName) {
|
||||
return cityName;
|
||||
}
|
||||
}
|
||||
|
||||
return "";
|
||||
};
|
||||
|
||||
createCarrier = async () => {
|
||||
const { language } = languageStore;
|
||||
const cityName =
|
||||
cityStore.cities[language].data.find(
|
||||
(city) => city.id === this.createCarrierData.city_id
|
||||
)?.name || "";
|
||||
const cityName = this.resolveCityName(this.createCarrierData.city_id, language);
|
||||
|
||||
const payload = {
|
||||
full_name: this.createCarrierData[language].full_name,
|
||||
@@ -172,12 +212,16 @@ class CarrierStore {
|
||||
});
|
||||
|
||||
for (const lang of ["ru", "en", "zh"].filter((l) => l !== language)) {
|
||||
const cityNameForLang = this.resolveCityName(
|
||||
this.createCarrierData.city_id,
|
||||
lang as Language
|
||||
);
|
||||
const patchPayload = {
|
||||
// @ts-ignore
|
||||
full_name: this.createCarrierData[lang as any].full_name as string,
|
||||
// @ts-ignore
|
||||
short_name: this.createCarrierData[lang as any].short_name as string,
|
||||
city: cityName,
|
||||
city: cityNameForLang || cityName,
|
||||
city_id: this.createCarrierData.city_id,
|
||||
// @ts-ignore
|
||||
slogan: this.createCarrierData[lang as any].slogan as string,
|
||||
@@ -273,13 +317,8 @@ class CarrierStore {
|
||||
};
|
||||
|
||||
editCarrier = async (id: number) => {
|
||||
const { language } = languageStore;
|
||||
const cityName =
|
||||
cityStore.cities[language].data.find(
|
||||
(city) => city.id === this.editCarrierData.city_id
|
||||
)?.name || "";
|
||||
|
||||
for (const lang of ["ru", "en", "zh"] as const) {
|
||||
const cityName = this.resolveCityName(this.editCarrierData.city_id, lang);
|
||||
const response = await languageInstance(lang).patch(`/carrier/${id}`, {
|
||||
...this.editCarrierData[lang],
|
||||
city: cityName,
|
||||
|
||||
Reference in New Issue
Block a user