At what point does GlobalString().link goes from an empty string to a valid URL before being used. The pattern around the usage of GlobalString is also incorrect.
@main
struct WallTaker_for_macOSApp: App {
@AppStorage("showMenuBarExtra") private var showMenuBarExtra = true
@StateObject var globalString = GlobalString()
var body: some Scene {
WindowGroup {
ContentView()
.environmentObject(globalString)
}
}
}
Then change link from an empty string to a valid URL string to prevent the URL init from returning nil.
Also change from
url = URL(string: GlobalString().link)
to
url = URL(string: globalString.link)
from
.task {
await Wallpaper().fetchLink()
}
to something like
.task {
let wallpaper = Wallpaper()
wallpaper.url = URL(globalString.link)
await wallpaper.fetchLink()
}