Add Lottie global loading overlay and fix stuck loading states.

Replace per-VC activity indicators with a ref-counted GlobalLoadingManager, and resolve duplicate show/hide calls on Profile, Statistics, and Home tabs.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-06 17:43:13 +08:00
parent 3b17b7f7f0
commit 39186cfe25
14 changed files with 281 additions and 75 deletions

View File

@ -0,0 +1,54 @@
//
// GlobalLoadingManagerTests.swift
// suixinkanTests
//
import XCTest
@testable import suixinkan
@MainActor
/// Loading
final class GlobalLoadingManagerTests: XCTestCase {
override func tearDown() {
GlobalLoadingManager.shared.hideAll()
super.tearDown()
}
func testShowAndHideToggleVisibilityState() {
let manager = GlobalLoadingManager.shared
XCTAssertFalse(manager.isShowing)
manager.show()
XCTAssertTrue(manager.isShowing)
manager.hide()
XCTAssertFalse(manager.isShowing)
}
func testNestedShowRequiresMatchingHideCount() {
let manager = GlobalLoadingManager.shared
manager.show()
manager.show()
XCTAssertTrue(manager.isShowing)
manager.hide()
XCTAssertTrue(manager.isShowing)
manager.hide()
XCTAssertFalse(manager.isShowing)
}
func testHideAllResetsNestedCount() {
let manager = GlobalLoadingManager.shared
manager.show()
manager.show()
manager.hideAll()
XCTAssertFalse(manager.isShowing)
manager.hide()
XCTAssertFalse(manager.isShowing)
}
}