Skip to content

Commit 09ef2a2

Browse files
committed
spixi-0.9.10
1 parent 8a6d421 commit 09ef2a2

File tree

21 files changed

+109
-58
lines changed

21 files changed

+109
-58
lines changed

Spixi/Meta/Config.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public class Config
3333
public static readonly int packetDataSize = 102400; // 100 Kb per packet for file transfers
3434
public static readonly long packetRequestTimeout = 60; // Time in seconds to re-request packets
3535

36-
public static readonly string version = "spixi-0.9.10-dev"; // Spixi version
36+
public static readonly string version = "spixi-0.9.10"; // Spixi version
3737

3838
public static readonly string checkVersionUrl = "https://resources.ixian.io/spixi-update.txt";
3939
public static readonly int checkVersionSeconds = 1 * 60 * 60; // 1 hour

Spixi/Pages/Launch/LaunchPage.xaml.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@ public LaunchPage ()
1515
InitializeComponent ();
1616
NavigationPage.SetHasNavigationBar(this, false);
1717

18+
string lang = "en-us";
19+
if (SpixiLocalization.loadLanguage(lang))
20+
{
21+
Preferences.Default.Set("language", lang);
22+
}
23+
1824
loadPage(webView, "intro.html");
1925
}
2026

Spixi/Pages/Settings/SettingsPage.xaml.cs

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,14 @@ private void onNavigating(object sender, WebNavigatingEventArgs e)
7676
}
7777
else if (current_url.Equals("ixian:back", StringComparison.Ordinal))
7878
{
79-
OnBackButtonPressed();
79+
var source_file_path = Path.Combine(IxianHandler.localStorage.avatarsPath, "avatar-tmp.jpg");
80+
// Delete the temporary avatar image
81+
if (File.Exists(source_file_path))
82+
{
83+
File.Delete(source_file_path);
84+
}
85+
resetLanguage();
86+
popPageAsync();
8087
}
8188
else if (current_url.Equals("ixian:error", StringComparison.Ordinal))
8289
{
@@ -128,6 +135,7 @@ private void onNavigating(object sender, WebNavigatingEventArgs e)
128135
if (SpixiLocalization.loadLanguage(lang))
129136
{
130137
selectedLanguage = lang;
138+
Preferences.Default.Set("language", selectedLanguage);
131139
loadPage(webView, "settings.html");
132140
}
133141
else
@@ -150,14 +158,18 @@ private void onNavigating(object sender, WebNavigatingEventArgs e)
150158
var lockPage = new LockPage(true);
151159
lockPage.authSucceeded += HandleAuthSucceeded;
152160
Navigation.PushModalAsync(lockPage);
153-
154-
155161
}
156162
}
157163
else if (current_url.StartsWith("ixian:appearance:", StringComparison.Ordinal))
158164
{
159165
string appearanceString = current_url.Substring("ixian:appearance:".Length);
160166
selectedAppearance = (ThemeAppearance)Convert.ToInt32(appearanceString);
167+
168+
if (ThemeManager.changeAppearance(selectedAppearance))
169+
{
170+
SPlatformUtils.setEdgeToEdge();
171+
loadPage(webView, "settings.html");
172+
}
161173
}
162174
else
163175
{
@@ -392,10 +404,7 @@ public void onRemoveAvatar()
392404

393405
protected override bool OnBackButtonPressed()
394406
{
395-
resetLanguage();
396-
397-
popPageAsync();
398-
407+
Utils.sendUiCommand(this, "onBack");
399408
return true;
400409
}
401410
}

Spixi/Platforms/Windows/Package.appxmanifest

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
66
IgnorableNamespaces="uap rescap">
77

8-
<Identity Name="com.ixilabs.spixi" Publisher="CN=ixiandev" Version="0.9.9.0" />
8+
<Identity Name="com.ixilabs.spixi" Publisher="CN=ixiandev" Version="0.9.10.0" />
99

1010
<Properties>
1111
<DisplayName>Spixi</DisplayName>

Spixi/Platforms/Windows/app.manifest

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
3-
<assemblyIdentity version="0.9.9.0" name="Spixi.WinUI.app"/>
3+
<assemblyIdentity version="0.9.10.0" name="Spixi.WinUI.app"/>
44

55
<application xmlns="urn:schemas-microsoft-com:asm.v3">
66
<windowsSettings>

Spixi/Platforms/iOS/Info.plist

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@
4444
<key>NSFaceIDUsageDescription</key>
4545
<string>Biometric authentication for unlocking the app</string>
4646
<key>CFBundleVersion</key>
47-
<string>0.9.9.0</string>
47+
<string>0.9.10.0</string>
4848
<key>CFBundleShortVersionString</key>
49-
<string>0.9.9</string>
49+
<string>0.9.10</string>
5050
<key>UIBackgroundModes</key>
5151
<array>
5252
<string>remote-notification</string>

Spixi/Resources/Raw/html/settings.html

Lines changed: 54 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -172,26 +172,6 @@
172172
</div>
173173

174174
<div class="spixi-holder-40"></div>
175-
<div id="lockModal" class="spixi-modal">
176-
<!-- Modal content -->
177-
<div class="modal-content">
178-
179-
<div class="spixi-modal-text">
180-
*SL{settings-lock-confirm-text}
181-
</div>
182-
183-
<hr class="spixi-separator noheightmargins fullwidth" />
184-
<div class="spixi-modal-footer">
185-
<div class="spixi-modal-close">*SL{settings-cancel}</div>
186-
187-
<div id="confirmlock" class="spixi-modal-confirm">*SL{settings-confirm}</div>
188-
189-
</div>
190-
191-
</div>
192-
</div>
193-
194-
195175

196176
<hr class="spixi-separator-main" />
197177
<div class="spixi-textsection-holder spixi-textsection-header">
@@ -293,18 +273,48 @@
293273

294274
</div>
295275

276+
<!--Unsaved Changes Modal-->
277+
<div class="new-modal-wrapper" id="unsavedChangesModal" style="display: none;">
278+
<div class="new-modal-container">
279+
<!--<i class="fa fa-user-times modal-remove-icon"></i>-->
280+
<div class="new-modal-texts">
281+
<span class="label-lg">*SL{settings-unsaved-changes-modal-title}</span>
282+
<span class="body-sm">*SL{settings-unsaved-changes-modal-subtitle}</span>
283+
</div>
284+
<div class="new-modal-buttons">
285+
<div class="spixi-flat-button label-sm" onclick="document.getElementById('unsavedChangesModal').style.display = 'none';">
286+
*SL{settings-cancel}
287+
</div>
288+
<div class="spixi-flat-button label-sm button outline"
289+
onclick="location.href = 'ixian:back';">
290+
*SL{settings-confirm}
291+
</div>
292+
</div>
293+
</div>
294+
</div>
295+
296296
<script type="text/javascript">
297+
var nickname = "";
298+
var settingsChanged = false;
299+
297300
var deleteWalletModal = document.getElementById('deleteWalletModal');
298301
var deleteAccountModal = document.getElementById('deleteAccountModal');
299302
var deleteHistoryModal = document.getElementById('deleteHistoryModal');
300303
var deleteDownloadsModal = document.getElementById('deleteDownloadsModal');
301-
var lockModal = document.getElementById('lockModal');
304+
var unsavedChangesModal = document.getElementById('unsavedChangesModal');
302305

303306
var lockSwitch = document.getElementById("lockSwitch");
304307

308+
function onBack() {
309+
if (settingsChanged) {
310+
unsavedChangesModal.style.display = "flex";
311+
} else {
312+
location.href = "ixian:back";
313+
}
314+
}
305315

306316
document.getElementById("backbtn").onclick = function () {
307-
location.href = "ixian:back";
317+
onBack();
308318
}
309319

310320
document.getElementById("savebtn").onclick = function () {
@@ -343,32 +353,30 @@
343353
else if (event.target == deleteDownloadsModal) {
344354
deleteDownloadsModal.style.display = "none";
345355
}
346-
else if (event.target == lockModal) {
347-
lockModal.style.display = "none";
356+
else if (event.target == unsavedChangesModal) {
357+
unsavedChangesModal.style.display = "none";
348358
}
349359
}
350360

351361
document.getElementsByClassName("spixi-modal-footer")[0].onclick = function () {
352362
deleteAccountModal.style.display = "none";
353363
}
354364
document.getElementsByClassName("spixi-modal-footer")[1].onclick = function () {
355-
lockModal.style.display = "none";
356-
}
357-
document.getElementsByClassName("spixi-modal-footer")[2].onclick = function () {
358365
deleteWalletModal.style.display = "none";
359366
}
360-
document.getElementsByClassName("spixi-modal-footer")[3].onclick = function () {
367+
document.getElementsByClassName("spixi-modal-footer")[2].onclick = function () {
361368
deleteHistoryModal.style.display = "none";
362369
}
363-
document.getElementsByClassName("spixi-modal-footer")[4].onclick = function () {
370+
document.getElementsByClassName("spixi-modal-footer")[3].onclick = function () {
364371
deleteDownloadsModal.style.display = "none";
365372
}
366373

367374

368375
document.getElementById("avatar").onclick = function () {
376+
settingsChanged = true;
369377
location.href = "ixian:avatar";
370378
}
371-
379+
372380
function loadAvatar(avatar_path) {
373381
avatar_path = avatar_path.replace(/&#92;/g, '\\');
374382

@@ -378,6 +386,7 @@
378386
}
379387

380388
function setNickname(nick) {
389+
nickname = nick;
381390
document.getElementById("nicknameInput").value = nick;
382391
}
383392

@@ -390,14 +399,13 @@
390399
}
391400
}
392401

393-
function setLanguage(lang)
394-
{
402+
function setLanguage(lang) {
395403
document.getElementById("SelectedLanguage").innerHTML = lang;
396404
}
397405

398-
function changeLanguage(langEl)
399-
{
400-
document.getElementById('LanguageDropDown').style.display='none';
406+
function changeLanguage(langEl) {
407+
settingsChanged = true;
408+
document.getElementById('LanguageDropDown').style.display = 'none';
401409
setLanguage(langEl.innerHTML);
402410
location.href = "ixian:language:" + langEl.getAttribute("lang-data");
403411
return false;
@@ -413,6 +421,7 @@
413421
}
414422

415423
function changeAppearance(appEl) {
424+
settingsChanged = true;
416425
document.getElementById('AppearanceDropDown').style.display = 'none';
417426
var attr = appEl.getAttribute("app-data");
418427
setAppearance(attr);
@@ -428,22 +437,23 @@
428437
lockSwitch.className = "spixi-switch off";
429438
}
430439
}
431-
440+
432441
lockSwitch.onclick = function () {
442+
settingsChanged = true;
433443
if (lockSwitch.classList.contains("off")) {
434-
lockModal.style.display = "block";
435-
444+
lockSwitch.className = "spixi-switch";
445+
location.href = "ixian:lock:on";
436446
return;
437447
}
448+
lockSwitch.className = "spixi-switch off";
438449
location.href = "ixian:lock:off";
439450
}
440-
document.getElementById("confirmlock").onclick = function () {
441-
lockModal.style.display = "none";
442-
lockSwitch.className = "spixi-switch";
443-
location.href = "ixian:lock:on";
444-
}
445-
446451

452+
document.getElementById("nicknameInput").onblur = function () {
453+
if (nickname != document.getElementById("nicknameInput").value) {
454+
settingsChanged = true;
455+
}
456+
}
447457
</script>
448458
</body>
449459
</html>

Spixi/Resources/Raw/lang/cn-cn.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,6 +427,8 @@ settings-deleted-error-title = 错误
427427
settings-deleted-error-text = 发生未知错误。
428428
settings-emptynick-title = 无效昵称
429429
settings-emptynick-text = 请输入昵称。
430+
settings-unsaved-changes-modal-title = 未保存的更改
431+
settings-unsaved-changes-modal-subtitle = 如果现在离开,您的更改将会丢失。确定要继续吗?
430432

431433
; Settings Backup Screen
432434
settings-backup-title = 账户备份

Spixi/Resources/Raw/lang/de-de.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,6 +427,8 @@ settings-deleted-error-title = Fehler
427427
settings-deleted-error-text = Ein unbekannter Fehler ist aufgetreten.
428428
settings-emptynick-title = Ungültiger Spitzname
429429
settings-emptynick-text = Bitte gib einen Spitznamen ein.
430+
settings-unsaved-changes-modal-title = Nicht gespeicherte Änderungen
431+
settings-unsaved-changes-modal-subtitle = Wenn Sie jetzt verlassen, gehen Ihre Änderungen verloren. Möchten Sie fortfahren?
430432

431433
; Settings Backup Screen
432434
settings-backup-title = Konto sichern

Spixi/Resources/Raw/lang/en-us.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,8 @@ settings-deleted-error-title = Error
428428
settings-deleted-error-text = Unknown error has occurred.
429429
settings-emptynick-title = Invalid nickname
430430
settings-emptynick-text = Please enter nickname.
431+
settings-unsaved-changes-modal-title = Unsaved changes
432+
settings-unsaved-changes-modal-subtitle = If you leave now, your changes will be lost. Do you want to continue?
431433

432434
; Settings Backup Screen
433435
settings-backup-title = Backup Account

0 commit comments

Comments
 (0)