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(() => {