feat: update system settings to include media items for logo, favicon, and login cover, enhancing data handling in forms and validation
This commit is contained in:
parent
c8344f27cb
commit
26a10071b2
@ -39,6 +39,9 @@ public function systemData(): array
|
|||||||
'logo_url' => $logo['url'] ?? null,
|
'logo_url' => $logo['url'] ?? null,
|
||||||
'favicon_url' => $favicon['url'] ?? null,
|
'favicon_url' => $favicon['url'] ?? null,
|
||||||
'login_cover_url' => $loginCover['url'] ?? null,
|
'login_cover_url' => $loginCover['url'] ?? null,
|
||||||
|
'logo' => $logo,
|
||||||
|
'favicon' => $favicon,
|
||||||
|
'login_cover' => $loginCover,
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -57,6 +60,10 @@ function () use ($validated): void {
|
|||||||
$settings->address = $validated['address'] ?? null;
|
$settings->address = $validated['address'] ?? null;
|
||||||
$settings->save();
|
$settings->save();
|
||||||
|
|
||||||
|
$hasLogoInput = isset($validated['logo']) || isset($validated['logo_s3_key']);
|
||||||
|
$hasFaviconInput = isset($validated['favicon']) || isset($validated['favicon_s3_key']);
|
||||||
|
$hasLoginCoverInput = isset($validated['login_cover']) || isset($validated['login_cover_s3_key']);
|
||||||
|
|
||||||
$this->syncPhotos(
|
$this->syncPhotos(
|
||||||
$configuration,
|
$configuration,
|
||||||
[
|
[
|
||||||
@ -92,15 +99,15 @@ function () use ($validated): void {
|
|||||||
|
|
||||||
$errors = [];
|
$errors = [];
|
||||||
|
|
||||||
if (! $configuration->hasMedia('logo')) {
|
if ($hasLogoInput && ! $configuration->hasMedia('logo')) {
|
||||||
$errors['logo'] = 'Logo wajib diisi.';
|
$errors['logo'] = 'Logo wajib diisi.';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! $configuration->hasMedia('favicon')) {
|
if ($hasFaviconInput && ! $configuration->hasMedia('favicon')) {
|
||||||
$errors['favicon'] = 'Favicon wajib diisi.';
|
$errors['favicon'] = 'Favicon wajib diisi.';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! $configuration->hasMedia('login_cover')) {
|
if ($hasLoginCoverInput && ! $configuration->hasMedia('login_cover')) {
|
||||||
$errors['login_cover'] = 'Cover login wajib diisi.';
|
$errors['login_cover'] = 'Cover login wajib diisi.';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -29,9 +29,9 @@ const form = useForm({
|
|||||||
address: props.data.address ?? '',
|
address: props.data.address ?? '',
|
||||||
});
|
});
|
||||||
|
|
||||||
const logoState = ref<MediaUploadState>(createMediaUploadState());
|
const logoState = ref<MediaUploadState>(createMediaUploadState(props.data.logo ? [props.data.logo] : []));
|
||||||
const faviconState = ref<MediaUploadState>(createMediaUploadState());
|
const faviconState = ref<MediaUploadState>(createMediaUploadState(props.data.favicon ? [props.data.favicon] : []));
|
||||||
const loginCoverState = ref<MediaUploadState>(createMediaUploadState());
|
const loginCoverState = ref<MediaUploadState>(createMediaUploadState(props.data.login_cover ? [props.data.login_cover] : []));
|
||||||
|
|
||||||
const isUploading = computed(() =>
|
const isUploading = computed(() =>
|
||||||
logoState.value.pendingUploads > 0 ||
|
logoState.value.pendingUploads > 0 ||
|
||||||
|
|||||||
@ -12,6 +12,12 @@ export type MarketplaceFeeRule = {
|
|||||||
value: number;
|
value: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export type MediaItem = {
|
||||||
|
id: number;
|
||||||
|
url: string;
|
||||||
|
thumb_url: string;
|
||||||
|
};
|
||||||
|
|
||||||
export type SystemSettingsData = {
|
export type SystemSettingsData = {
|
||||||
app_name: string;
|
app_name: string;
|
||||||
about_app: string;
|
about_app: string;
|
||||||
@ -21,6 +27,9 @@ export type SystemSettingsData = {
|
|||||||
logo_url: string;
|
logo_url: string;
|
||||||
favicon_url: string | null;
|
favicon_url: string | null;
|
||||||
login_cover_url: string;
|
login_cover_url: string;
|
||||||
|
logo: MediaItem | null;
|
||||||
|
favicon: MediaItem | null;
|
||||||
|
login_cover: MediaItem | null;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type SocialMediaSettingsData = {
|
export type SocialMediaSettingsData = {
|
||||||
@ -54,12 +63,6 @@ export type HrSettingsData = {
|
|||||||
absent_penalty_amount: number;
|
absent_penalty_amount: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type MediaItem = {
|
|
||||||
id: number;
|
|
||||||
url: string;
|
|
||||||
thumb_url: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type HomepageSettingsData = {
|
export type HomepageSettingsData = {
|
||||||
hero_image_url: string | null;
|
hero_image_url: string | null;
|
||||||
about_image_url: string | null;
|
about_image_url: string | null;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user