Skip to content

Instantly share code, notes, and snippets.

import SwiftUI
import Combine
@propertyWrapper
struct Streamed<Value: Sendable> {
var wrappedValue: Value {
didSet {
onCountUpdate(wrappedValue)
}
}
@garsdle
garsdle / Vanilla.swift
Last active December 4, 2021 05:21
Count app using vanilla SwiftUI, container views and Equatable
import SwiftUI
import Combine
import ComposableArchitecture
// MARK: - MODELS
struct Counter: Identifiable, Equatable {
let id: UUID
let createdAt: Date
var count: Int
}
import SwiftUI
import Combine
import ComposableArchitecture
// MARK: - MODELS
struct Counter: Identifiable, Equatable {
let id: UUID
let createdAt: Date
var count: Int
}
@garsdle
garsdle / View+Relative.swift
Last active July 27, 2021 22:40 — forked from IanKeen/View+Relative.swift
SwiftUI relative frame
struct SizePreferenceKey: PreferenceKey {
static var defaultValue: CGSize = .zero
static func reduce(value: inout CGSize, nextValue: () -> CGSize) {
value = nextValue()
}
}
struct RelativeSizeModifier: ViewModifier {
let percentWidth: CGFloat
import Combine
import SwiftUI
class ScopedGetObservable<T>: ObservableObject {
var cancellable: AnyCancellable?
let getter: () -> T
init<P>(getter: @autoclosure @escaping () -> T, publisher: P) where P: Publisher, P.Output == T, P.Failure == Never {
self.getter = getter
@garsdle
garsdle / ObservedStorePath.swift
Last active May 8, 2020 20:42
ObservedStorePath
@propertyWrapper
struct ObservedStorePath<Value: Equatable>: DynamicProperty {
@ObservedObject private var observableFilter: ObservableStoreFilter<Value>
var wrappedValue: Value {
get {
observableFilter.value
}
nonmutating set {
observableFilter.value = newValue
@garsdle
garsdle / ContentView.swift
Last active March 17, 2020 20:23
MirleftCard
struct ContentView: View {
@State var showNewCardView = false
@State var mirleftCards: [MirleftCard] = [
MirleftCard(image: Image("beach"), title: "The Beach", description: "The amazing view of the Grande Plage."),
MirleftCard(image: Image("sunset"), title: "Sunset", description: "The beautiful moroccan sunset."),
]
var body: some View {
struct OptionalView<Value, Content>: View where Content: View {
var content: (Value) -> Content
var value: Value
init?(_ value: Value?, @ViewBuilder content: @escaping (Value) -> Content) {
guard let value = value else {
return nil
}
self.value = value
self.content = content
struct AvatarView: View {
var image: UIImage?
var initials: String?
var body: some View {
OptionalView(image) { image in
Image(uiImage: image)
}
.fallbackView(initials) { initials in
Text(initials)
@garsdle
garsdle / DeepLink.swift
Last active March 15, 2019 01:20
An example of DeepLinking and makeIterator