2023-08-31 13:50:27 -05:00
|
|
|
//
|
|
|
|
|
// AppsEntry.swift
|
|
|
|
|
// AltWidgetExtension
|
|
|
|
|
//
|
|
|
|
|
// Created by Riley Testut on 8/22/23.
|
|
|
|
|
// Copyright © 2023 Riley Testut. All rights reserved.
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
import UIKit
|
|
|
|
|
import WidgetKit
|
|
|
|
|
|
|
|
|
|
import AltStoreCore
|
|
|
|
|
import AltSign
|
|
|
|
|
|
|
|
|
|
struct AppSnapshot
|
|
|
|
|
{
|
|
|
|
|
var name: String
|
|
|
|
|
var bundleIdentifier: String
|
|
|
|
|
var expirationDate: Date
|
|
|
|
|
var refreshedDate: Date
|
|
|
|
|
|
|
|
|
|
var tintColor: UIColor?
|
|
|
|
|
var icon: UIImage?
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extension AppSnapshot
|
|
|
|
|
{
|
|
|
|
|
// Declared in extension so we retain synthesized initializer.
|
|
|
|
|
init(installedApp: InstalledApp)
|
|
|
|
|
{
|
|
|
|
|
self.name = installedApp.name
|
|
|
|
|
self.bundleIdentifier = installedApp.bundleIdentifier
|
|
|
|
|
self.expirationDate = installedApp.expirationDate
|
|
|
|
|
self.refreshedDate = installedApp.refreshedDate
|
|
|
|
|
|
|
|
|
|
self.tintColor = installedApp.storeApp?.tintColor
|
|
|
|
|
|
|
|
|
|
let application = ALTApplication(fileURL: installedApp.fileURL)
|
|
|
|
|
self.icon = application?.icon?.resizing(toFill: CGSize(width: 180, height: 180))
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-09-01 13:27:28 -05:00
|
|
|
|
|
|
|
|
extension AppSnapshot
|
|
|
|
|
{
|
|
|
|
|
static func makePreviewSnapshots() -> (altstore: AppSnapshot, delta: AppSnapshot, clip: AppSnapshot, longAltStore: AppSnapshot, longDelta: AppSnapshot, longClip: AppSnapshot)
|
|
|
|
|
{
|
|
|
|
|
let shortRefreshedDate = Calendar.current.date(byAdding: .day, value: -2, to: Date()) ?? Date()
|
|
|
|
|
let shortExpirationDate = Calendar.current.date(byAdding: .day, value: 7, to: shortRefreshedDate) ?? Date()
|
|
|
|
|
|
|
|
|
|
let longRefreshedDate = Calendar.current.date(byAdding: .day, value: -100, to: Date()) ?? Date()
|
|
|
|
|
let longExpirationDate = Calendar.current.date(byAdding: .day, value: 365, to: longRefreshedDate) ?? Date()
|
|
|
|
|
|
|
|
|
|
let altstore = AppSnapshot(name: "AltStore",
|
|
|
|
|
bundleIdentifier: "com.rileytestut.AltStore",
|
|
|
|
|
expirationDate: shortExpirationDate,
|
|
|
|
|
refreshedDate: shortRefreshedDate,
|
|
|
|
|
tintColor: .altPrimary,
|
|
|
|
|
icon: UIImage(named: "AltStore"))
|
|
|
|
|
|
|
|
|
|
let delta = AppSnapshot(name: "Delta",
|
|
|
|
|
bundleIdentifier: "com.rileytestut.Delta",
|
|
|
|
|
expirationDate: shortExpirationDate,
|
|
|
|
|
refreshedDate: shortRefreshedDate,
|
|
|
|
|
tintColor: .deltaPrimary,
|
|
|
|
|
icon: UIImage(named: "Delta"))
|
|
|
|
|
|
|
|
|
|
let clip = AppSnapshot(name: "Clip",
|
|
|
|
|
bundleIdentifier: "com.rileytestut.Clip",
|
|
|
|
|
expirationDate: shortExpirationDate,
|
|
|
|
|
refreshedDate: shortRefreshedDate,
|
|
|
|
|
tintColor: .clipPrimary,
|
|
|
|
|
icon: UIImage(named: "Clip"))
|
|
|
|
|
|
|
|
|
|
let longAltStore = altstore.with(refreshedDate: longRefreshedDate, expirationDate: longExpirationDate)
|
|
|
|
|
let longDelta = delta.with(refreshedDate: longRefreshedDate, expirationDate: longExpirationDate)
|
|
|
|
|
let longClip = clip.with(refreshedDate: longRefreshedDate, expirationDate: longExpirationDate)
|
|
|
|
|
|
|
|
|
|
return (altstore, delta, clip, longAltStore, longDelta, longClip)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private func with(refreshedDate: Date, expirationDate: Date) -> AppSnapshot
|
|
|
|
|
{
|
|
|
|
|
var app = self
|
|
|
|
|
app.refreshedDate = refreshedDate
|
|
|
|
|
app.expirationDate = expirationDate
|
|
|
|
|
|
|
|
|
|
return app
|
|
|
|
|
}
|
|
|
|
|
}
|