Skip to content

Commit 2c0c23c

Browse files
committed
Add button to clear anisette state
1 parent ef1cbe1 commit 2c0c23c

File tree

5 files changed

+42
-7
lines changed

5 files changed

+42
-7
lines changed

src-tauri/src/account.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,17 @@ pub fn invalidate_account(sideloader_state: State<'_, SideloaderMutex>) {
111111
*sideloader_guard = None;
112112
}
113113

114+
#[tauri::command]
115+
pub fn reset_anisette_state() -> Result<(), String> {
116+
let state_entry = Entry::new("iloader", "anisette_state")
117+
.map_err(|e| format!("Failed to create keyring entry for anisette: {:?}.", e))?;
118+
state_entry
119+
.delete_credential()
120+
.map_err(|e| format!("Failed to delete anisette state: {:?}", e))?;
121+
122+
Ok(())
123+
}
124+
114125
async fn login(
115126
window: &Window,
116127
email: &str,
@@ -150,7 +161,8 @@ async fn login(
150161
let mut account = AppleAccount::builder(email)
151162
.anisette_provider(
152163
RemoteV3AnisetteProvider::default()
153-
.set_serial_number("iloader".to_string())
164+
.set_serial_number("0".to_String())
165+
.set_storage(Box::new(KeyringStorage::new("iloader".to_string())))
154166
.set_url(&anisette_url),
155167
)
156168
.login(password, tfa_closure)

src-tauri/src/lib.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ mod operation;
1212
use crate::{
1313
account::{
1414
delete_account, delete_app_id, get_certificates, invalidate_account, list_app_ids,
15-
logged_in_as, login_email_pass, login_stored_pass, revoke_certificate,
15+
logged_in_as, login_email_pass, login_stored_pass, reset_anisette_state,
16+
revoke_certificate,
1617
},
1718
device::{list_devices, set_selected_device, DeviceInfoMutex},
1819
pairing::{installed_pairing_apps, place_pairing_cmd},
@@ -56,6 +57,7 @@ pub fn run() {
5657
delete_app_id,
5758
installed_pairing_apps,
5859
place_pairing_cmd,
60+
reset_anisette_state,
5961
])
6062
.run(tauri::generate_context!())
6163
.expect("error while running tauri application");

src/AppleID.css

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@
108108
font-size: 0.95rem;
109109
background: rgba(255, 255, 255, 0.08);
110110
border: 1px solid rgba(255, 255, 255, 0.15);
111+
transition: filter 0.2s ease;
111112
}
112113

113114
.action-button.primary {
@@ -123,7 +124,7 @@
123124
}
124125

125126
.action-button:hover {
126-
filter: brightness(1.05);
127+
filter: brightness(1.25);
127128
}
128129

129130
.add-account {
@@ -139,4 +140,4 @@
139140

140141
.add-account:hover {
141142
color: #fff;
142-
}
143+
}

src/pages/Settings.css

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,4 +78,14 @@
7878
display: flex;
7979
align-items: center;
8080
justify-content: space-between;
81+
}
82+
83+
.settings-buttons {
84+
display: flex;
85+
flex-wrap: wrap;
86+
gap: 0.75rem;
87+
}
88+
89+
.settings-buttons button {
90+
flex: 1;
8191
}

src/pages/Settings.tsx

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { LogLevel, useLogs } from "../LogContext";
55
import { Modal } from "../components/Modal";
66
import { Dropdown } from "../components/Dropdown";
77
import { toast } from "sonner";
8+
import { invoke } from "@tauri-apps/api/core";
89

910
type SettingsProps = {
1011
showHeading?: boolean;
@@ -61,9 +62,18 @@ export const Settings = ({ showHeading = true }: SettingsProps) => {
6162
customToggleLabel="Use custom Anisette server"
6263
presetToggleLabel="Back to preset servers"
6364
/>
64-
<button onClick={() => setLogsOpen(true)}>
65-
View Logs
66-
</button>
65+
<div className="settings-buttons">
66+
<button className="action-button danger" onClick={() => toast.promise(invoke("reset_anisette_state"), {
67+
loading: "Resetting anisette state...",
68+
success: "Anisette state reset successfully",
69+
error: (e) => "Failed to reset anisette state: " + e,
70+
})}>
71+
Reset anisette state
72+
</button>
73+
<button onClick={() => setLogsOpen(true)}>
74+
View Logs
75+
</button>
76+
</div>
6777
<Modal isOpen={logsOpen} close={() => setLogsOpen(false)}>
6878
<div className="log-outer">
6979
<div className="log-header">

0 commit comments

Comments
 (0)