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,
|
||||
'favicon_url' => $favicon['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->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(
|
||||
$configuration,
|
||||
[
|
||||
@ -92,15 +99,15 @@ function () use ($validated): void {
|
||||
|
||||
$errors = [];
|
||||
|
||||
if (! $configuration->hasMedia('logo')) {
|
||||
if ($hasLogoInput && ! $configuration->hasMedia('logo')) {
|
||||
$errors['logo'] = 'Logo wajib diisi.';
|
||||
}
|
||||
|
||||
if (! $configuration->hasMedia('favicon')) {
|
||||
if ($hasFaviconInput && ! $configuration->hasMedia('favicon')) {
|
||||
$errors['favicon'] = 'Favicon wajib diisi.';
|
||||
}
|
||||
|
||||
if (! $configuration->hasMedia('login_cover')) {
|
||||
if ($hasLoginCoverInput && ! $configuration->hasMedia('login_cover')) {
|
||||
$errors['login_cover'] = 'Cover login wajib diisi.';
|
||||
}
|
||||
|
||||
|
||||
@ -29,9 +29,9 @@ const form = useForm({
|
||||
address: props.data.address ?? '',
|
||||
});
|
||||
|
||||
const logoState = ref<MediaUploadState>(createMediaUploadState());
|
||||
const faviconState = ref<MediaUploadState>(createMediaUploadState());
|
||||
const loginCoverState = ref<MediaUploadState>(createMediaUploadState());
|
||||
const logoState = ref<MediaUploadState>(createMediaUploadState(props.data.logo ? [props.data.logo] : []));
|
||||
const faviconState = ref<MediaUploadState>(createMediaUploadState(props.data.favicon ? [props.data.favicon] : []));
|
||||
const loginCoverState = ref<MediaUploadState>(createMediaUploadState(props.data.login_cover ? [props.data.login_cover] : []));
|
||||
|
||||
const isUploading = computed(() =>
|
||||
logoState.value.pendingUploads > 0 ||
|
||||
|
||||
@ -12,6 +12,12 @@ export type MarketplaceFeeRule = {
|
||||
value: number;
|
||||
};
|
||||
|
||||
export type MediaItem = {
|
||||
id: number;
|
||||
url: string;
|
||||
thumb_url: string;
|
||||
};
|
||||
|
||||
export type SystemSettingsData = {
|
||||
app_name: string;
|
||||
about_app: string;
|
||||
@ -21,6 +27,9 @@ export type SystemSettingsData = {
|
||||
logo_url: string;
|
||||
favicon_url: string | null;
|
||||
login_cover_url: string;
|
||||
logo: MediaItem | null;
|
||||
favicon: MediaItem | null;
|
||||
login_cover: MediaItem | null;
|
||||
};
|
||||
|
||||
export type SocialMediaSettingsData = {
|
||||
@ -54,12 +63,6 @@ export type HrSettingsData = {
|
||||
absent_penalty_amount: number;
|
||||
};
|
||||
|
||||
export type MediaItem = {
|
||||
id: number;
|
||||
url: string;
|
||||
thumb_url: string;
|
||||
};
|
||||
|
||||
export type HomepageSettingsData = {
|
||||
hero_image_url: string | null;
|
||||
about_image_url: string | null;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user