Skip to content

Instantly share code, notes, and snippets.

View byaruhaf's full-sized avatar
🏄
Surfing Xcode

Franklin Byaruhanga byaruhaf

🏄
Surfing Xcode
View GitHub Profile
Company:
Role:
Full-time:
Remote OK:
Sponsorship:
Salary Range: [Actual range, not "Based on experience or skillset, location" or so forth]
Contact:
Location:
Relocation Assistance:
Brief Description:
@byaruhaf
byaruhaf / Searchable_iOS16.swift
Created July 18, 2023 00:31 — forked from marcoarment/Searchable_iOS16.swift
Backporting iOS 17's SwiftUI .searchable($isPresented) binding for iOS 16
import SwiftUI
extension View {
public func searchable_iOS16(text: Binding<String>, isPresented: Binding<Bool>, placement: SearchFieldPlacement) -> some View {
modifier(Searchable_iOS16(text: text, isPresented: isPresented, placement: placement))
}
}
public struct Searchable_iOS16: ViewModifier {
@Binding var text: String
//
// WheelView.swift
// ShowcaseShareCard
//
// Created by Ryan Gittings on 10/07/2023.
//
import SwiftUI
struct ContentView: View {
@byaruhaf
byaruhaf / LocalNotifications.swift
Created June 30, 2023 23:08 — forked from SwiftfulThinking/LocalNotifications.swift
Local Push Notifications for iOS (incl. convenience methods and async support)
import Foundation
import UIKit
import UserNotifications
import CoreLocation
enum NotificationTriggerOption {
case date(date: Date, repeats: Bool)
case time(timeInterval: TimeInterval, repeats: Bool)
case location(coordinates: CLLocationCoordinate2D, radius: CLLocationDistance, notifyOnEntry: Bool, notifyOnExit: Bool, repeats: Bool)
@byaruhaf
byaruhaf / Query+AsyncTrowingStream.swift
Created June 28, 2023 01:19 — forked from yimajo/Query+AsyncTrowingStream.swift
Wrap Firestore's addSnapshotListner method for use with AsyncThrowingStream.
import FirebaseFirestore
// MARK: - async
extension Query {
func addSnapshotListener<T>(
includeMetadataChanges: Bool = false
) -> AsyncThrowingStream<[T], Error> where T: Decodable{
.init { continuation in
let listener = addSnapshotListener(includeMetadataChanges: includeMetadataChanges) { result in
@byaruhaf
byaruhaf / Query+Result.swift
Created June 28, 2023 01:19 — forked from yimajo/Query+Result.swift
FirebaseFirestore Query Snapshot listener to Result conversion wrapper.
import FirebaseFirestore
@available(swift 5.0)
public extension Query {
func addSnapshotListener(
includeMetadataChanges: Bool = false,
listener: @escaping (Result<QuerySnapshot, Error>) -> ()
) -> some ListenerRegistration {
addSnapshotListener(includeMetadataChanges: includeMetadataChanges) { snapshot, error in
if let error {
import SwiftUI
struct CodeTesting: View {
@State private var presentView:Bool = false
@State private var date: Date = .init()
var body: some View {
VStack(alignment: .center) {
Button {
withAnimation(.easeOut) {
@byaruhaf
byaruhaf / ContentView.swift
Created June 9, 2023 22:00
Testing out MapKit
import SwiftUI
import MapKit
extension CLLocationCoordinate2D {
private static let r1 = CLLocationCoordinate2D(latitude: 0.39693247863763503, longitude: 32.635483516072625)
private static let r2 = CLLocationCoordinate2D(latitude: 0.3969011303451089, longitude: 32.635464706645294)
private static let r3 = CLLocationCoordinate2D(latitude: 0.396853818673706, longitude: 32.63547246284327)
private static let r4 = CLLocationCoordinate2D(latitude: 0.39683210184085765, longitude: 32.63549960953619)
private static let r5 = CLLocationCoordinate2D(latitude: 0.39681558174718023, longitude: 32.63555565271399)
private static let r6 = CLLocationCoordinate2D(latitude: 0.3967988183431943, longitude: 32.63562002573073)
private static let r7 = CLLocationCoordinate2D(latitude: 0.3967719968967302, longitude: 32.63570853862876)
We can make this file beautiful and searchable if this error is corrected: No commas found in this CSV file in line 0.
mr Marathi
bs Bosnian
ee_TG Ewe (Togo)
ms Malay
kam_KE Kamba (Kenya)
mt Maltese
ha Hausa
es_HN Spanish (Honduras)
ml_IN Malayalam (India)
ro_MD Romanian (Moldova)
@byaruhaf
byaruhaf / config.js
Created May 4, 2023 04:42 — forked from codediodeio/config.js
Snippets from the Firestore Data Modeling Course
import * as firebase from 'firebase/app';
import 'firebase/firestore';
var firebaseConfig = {
// your firebase credentials
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);