Skip to content

Instantly share code, notes, and snippets.

View colinfwren's full-sized avatar

Colin Wren colinfwren

View GitHub Profile
@colinfwren
colinfwren / DataExportWithShareSheet.swift
Last active January 10, 2025 22:39
Data Export with Share Sheet
import SwiftUI
import SwiftData
struct ContentView: View {
@Environment(\.modelContext) var modelContext
@State private var sharingExport: Bool = false
@State private var exportUrl: URL?
var body: some View {
Button("Export your data") {
@colinfwren
colinfwren / ShareSheet.swift
Created January 10, 2025 22:14
Share Sheet wrapping of UIActivityViewController
import SwiftUI
import UIKit
import OSLog
let shareSheetLogger = Logger(subsystem: "", category: "view.ShareSheet")
struct ShareSheet: UIViewControllerRepresentable {
typealias UIViewControllerType = UIActivityViewController
@Binding var showing: Bool
@colinfwren
colinfwren / generateAndSave.swift
Last active January 10, 2025 22:39
Generating and Saving doc
import SwiftUI
import SwiftData
struct ContentView: View {
@Environment(\.modelContext) var modelContext
var body: some View {
Button("Export your data") {
exportData()
}
@colinfwren
colinfwren / nestedPom.swift
Created December 8, 2024 21:22
Nesting POMs for things like tabs
import XCTest
class tab1POM {
let app: XCUIApplication
init(app: XCUIApplication) {
self.app = app
}
func pressTheButton() {
@colinfwren
colinfwren / xcuitestWithPom.swift
Last active December 8, 2024 21:17
XCUITest with Page Object Model
import XCTest
class ExamplePOM {
let app: XCUIApplication
init(app: XCUIApplication) {
self.app = app
}
func pressTheButton() {
@colinfwren
colinfwren / xcuitest.swift
Last active December 8, 2024 21:06
Example XCUITest code
import XCTestCase
final class ATest: XCTestCase {
override func setUpWithError() throws {
continueAfterFailure = false
}
@MainActor
func testAThing() {
@colinfwren
colinfwren / usingAnalyticsEnum.swift
Created November 29, 2024 23:24
Making use of the analytics enum
.onChange(of: tabSelection) { fromTab, toTab in
Analytics.changedTab.capture(fromTab, toTab)
}
@colinfwren
colinfwren / analytics.swift
Created November 29, 2024 23:23
Analytics enum
import PostHog
enum Analytics {
case eventOne
case eventTwo
case changedTab
var eventName: String {
switch self {
case .eventOne: return "eventOne"
@colinfwren
colinfwren / ScreenNames.swift
Created November 29, 2024 23:21
Ading Screen names to post hog
import SwiftUI
import PostHog
struct ContentView: View {
@State private var tabSelection: Int = 0
var body: some View {
TabView(selection: $tabSelection) {
Tab("First View", value: 0) {
FirstTab()
@colinfwren
colinfwren / AppWithPostHog.swift
Created November 29, 2024 23:18
App init with PostHog
import SwiftUI
import PostHog
@main
struct YourApp: App {
init () {
let POSTHOG_API_KEY = ""
let POSTHOG_HOST = ""
let config = PostHogConfig(apiKey: POSTHOG_API_KEY, host: POSTHOG_HOST)
PostHogSDK.shared.setup(config)