feat: role system
This commit is contained in:
@@ -15,6 +15,7 @@ import { toast } from "react-toastify";
|
||||
import {
|
||||
carrierStore,
|
||||
cityStore,
|
||||
authStore,
|
||||
mediaStore,
|
||||
languageStore,
|
||||
isMediaIdEmpty,
|
||||
@@ -30,7 +31,8 @@ export const CarrierCreatePage = observer(() => {
|
||||
const navigate = useNavigate();
|
||||
const { createCarrierData, setCreateCarrierData } = carrierStore;
|
||||
const { language } = languageStore;
|
||||
const { selectedCityId } = useSelectedCity();
|
||||
const canReadCities = authStore.canRead("cities");
|
||||
const { selectedCityId, selectedCity } = useSelectedCity();
|
||||
const [selectedMediaId, setSelectedMediaId] = useState<string | null>(null);
|
||||
const [isLoading, setIsLoading] = useState(false);
|
||||
const [isSelectMediaOpen, setIsSelectMediaOpen] = useState(false);
|
||||
@@ -42,11 +44,37 @@ export const CarrierCreatePage = observer(() => {
|
||||
>(null);
|
||||
|
||||
useEffect(() => {
|
||||
cityStore.getCities("ru");
|
||||
const fetchCities = async () => {
|
||||
if (!authStore.me) {
|
||||
await authStore.getMeAction().catch(() => undefined);
|
||||
}
|
||||
if (authStore.canRead("cities")) {
|
||||
await cityStore.getCities("ru");
|
||||
return;
|
||||
}
|
||||
await authStore.fetchMeCities().catch(() => undefined);
|
||||
};
|
||||
|
||||
fetchCities();
|
||||
mediaStore.getMedia();
|
||||
languageStore.setLanguage("ru");
|
||||
}, []);
|
||||
|
||||
const baseCities = canReadCities
|
||||
? cityStore.cities["ru"].data
|
||||
: authStore.meCities["ru"].map((city) => ({
|
||||
id: city.city_id,
|
||||
name: city.name,
|
||||
country: "",
|
||||
country_code: "",
|
||||
arms: "",
|
||||
}));
|
||||
|
||||
const availableCities =
|
||||
selectedCity?.id && !baseCities.some((city) => city.id === selectedCity.id)
|
||||
? [selectedCity, ...baseCities]
|
||||
: baseCities;
|
||||
|
||||
useEffect(() => {
|
||||
if (selectedCityId && !createCarrierData.city_id) {
|
||||
setCreateCarrierData(
|
||||
@@ -134,7 +162,7 @@ export const CarrierCreatePage = observer(() => {
|
||||
)
|
||||
}
|
||||
>
|
||||
{cityStore.cities["ru"].data.map((city) => (
|
||||
{availableCities.map((city) => (
|
||||
<MenuItem key={city.id} value={city.id}>
|
||||
{city.name}
|
||||
</MenuItem>
|
||||
|
||||
Reference in New Issue
Block a user