1.03 for iOS and 1.5.0 for Android

This commit is contained in:
2025-09-27 02:13:51 -06:00
parent 416b68e96a
commit 298ba6149b
16 changed files with 1708 additions and 1271 deletions

View File

@@ -1,4 +1,3 @@
import SwiftUI
struct ProblemsView: View {
@@ -286,7 +285,7 @@ struct ProblemRow: View {
if !problem.imagePaths.isEmpty {
ScrollView(.horizontal, showsIndicators: false) {
HStack(spacing: 8) {
LazyHStack(spacing: 8) {
ForEach(problem.imagePaths.prefix(3), id: \.self) { imagePath in
ProblemImageView(imagePath: imagePath)
}
@@ -372,6 +371,13 @@ struct ProblemImageView: View {
@State private var isLoading = true
@State private var hasFailed = false
private static var imageCache: NSCache<NSString, UIImage> = {
let cache = NSCache<NSString, UIImage>()
cache.countLimit = 100
cache.totalCostLimit = 50 * 1024 * 1024 // 50MB
return cache
}()
var body: some View {
Group {
if let uiImage = uiImage {
@@ -412,10 +418,22 @@ struct ProblemImageView: View {
return
}
let cacheKey = NSString(string: imagePath)
// Check cache first
if let cachedImage = Self.imageCache.object(forKey: cacheKey) {
self.uiImage = cachedImage
self.isLoading = false
return
}
DispatchQueue.global(qos: .userInitiated).async {
if let data = ImageManager.shared.loadImageData(fromPath: imagePath),
let image = UIImage(data: data)
{
// Cache the image
Self.imageCache.setObject(image, forKey: cacheKey)
DispatchQueue.main.async {
self.uiImage = image
self.isLoading = false