diff --git a/apps/rebreak-magic/app/components/IosDeviceCard.vue b/apps/rebreak-magic/app/components/IosDeviceCard.vue index 0d7c679..59319db 100644 --- a/apps/rebreak-magic/app/components/IosDeviceCard.vue +++ b/apps/rebreak-magic/app/components/IosDeviceCard.vue @@ -58,8 +58,12 @@ v-if="!isConnected" class="mt-3 text-sm text-gray-600 dark:text-gray-300 flex items-start gap-2" > - - Verbinde dein iPhone mit USB, um den Schutz zu vervollständigen. + + {{ isSearching ? "Suche nach verbundenem iPhone…" : "Verbinde dein iPhone mit USB, um den Schutz zu vervollständigen." }} @@ -190,8 +194,8 @@ :variant="action.variant" size="sm" :icon="action.icon" - :loading="manualSyncing || autoSyncing" - :disabled="autoSyncing" + :loading="manualSyncing || autoSyncing || isSearching" + :disabled="autoSyncing || isSearching" @click="onActionClick" > {{ action.label }} @@ -222,6 +226,7 @@ const props = defineProps<{ device: ComputedDevice; iphone: IphoneDeviceState | null; isConnected: boolean; + isSearching?: boolean; inGracePeriod?: boolean; }>(); @@ -232,6 +237,7 @@ const emit = defineEmits<{ (e: "sync", device: ComputedDevice): void; (e: "open", device: ComputedDevice): void; (e: "remove", device: ComputedDevice): void; + (e: "connect", device: ComputedDevice): void; }>(); const ENROLLMENT_PROFILE_ID = "org.rebreak.mdm.enrollment"; @@ -472,13 +478,21 @@ const action = computed(() => { }; } + if (props.isSearching) { + return { + label: "iPhone suchen…", + icon: "i-heroicons-arrow-path", + color: "neutral", + variant: "soft", + }; + } + if (!props.isConnected || !props.iphone) { return { label: "iPhone verbinden, um ReBreak Cloud zu synchronisieren", icon: "i-heroicons-link", color: "primary", variant: "solid", - to: "/detect", }; } @@ -615,6 +629,11 @@ function onActionClick() { if (autoSyncing.value) return; + if (!props.isConnected || !props.iphone) { + emit("connect", props.device); + return; + } + manualSyncing.value = true; emit("sync", props.device); setTimeout(() => {