Skip to content

Instantly share code, notes, and snippets.

View ericlewis's full-sized avatar

Eric Lewis ericlewis

View GitHub Profile
@ericlewis
ericlewis / darkhn.js
Created December 14, 2020 17:17
Passthrough script for dark mode
/**
* An object with different URLs to fetch
* @param {Object} ORIGINS
*/
const ORIGINS = {
"darknews.ericlewis.workers.dev": "news.ycombinator.com"
}
async function handleRequest(request) {
const url = new URL(request.url)
@ericlewis
ericlewis / SKCloudServiceController+Combine.swift
Last active December 11, 2020 20:24
Simple future publishers for SKCloudServiceController
//
// StoreKit+Combine.swift
//
// Created by Eric Lewis on 12/11/20.
//
import StoreKit
import Combine
extension SKCloudServiceController {
@ericlewis
ericlewis / shit.swift
Created September 29, 2020 00:29
ugh
func fetchOrder(type: FeedType) {
DispatchQueue.global(qos: .userInitiated).async {
let context = PersistenceController.shared.container.newBackgroundContext()
self.orderCancellable = self.ref.child(type.hackerNewsEndpoint).observeSingleEventPublisher(of: .value)
.compactMap {
$0.value as? [Int]
}
.flatMap { orders -> Publishers.Sequence<[Int], Never> in
extension DatabaseReference {
func observeSingleEventPublisher(of eventType: DataEventType) -> AnyPublisher<DataSnapshot, Error> {
Future<DataSnapshot, Error> { [weak self] completion in
self?.observeSingleEvent(of: eventType) {
completion(.success($0))
}
}
.eraseToAnyPublisher()
}
}
//
// LPMetadataProvider+Combine.swift
// Hacker
//
// Created by Eric Lewis on 9/22/20.
//
import SwiftUI
import LinkPresentation
import Combine
import LinkPresentation
import Combine
extension LPMetadataProvider {
func startFetchingMetadataPublisher(for url: URL) -> AnyPublisher<LPLinkMetadata?, Error> {
Future<LPLinkMetadata?, Error> { completion in
self.startFetchingMetadata(for: url) { meta, error in
guard let error = error else {
return completion(.success(meta))
}
@ericlewis
ericlewis / ew.swift
Created December 5, 2019 23:17
Bluetooth manager for Bangle.js devices
import CoreBluetooth
protocol ManagerDelegate: AnyObject {
func connected()
func disconnected()
}
class BluetoothManager: NSObject, CBCentralManagerDelegate, CBPeripheralDelegate {
var centralManager: CBCentralManager!
class Store: ObservableObject {
@Published var id: String? = nil
init() {
id = UserDefaults.standard.string(forKey: "key")
let _ = $id.sink {
UserDefaults.standard.set(id, forKey: "key")
}
}
import Foundation
import XcodeGenKit
import ProjectSpec
import XcodeProj
import PathKit
import Files
import SwiftSyntax
enum Errors: Error {
case MainNotModified
@ericlewis
ericlewis / HList.swift
Created October 25, 2019 20:40
"horizontal" list in SwiftUI
import SwiftUI
extension Int: Identifiable {
public var id: Self {
self
}
}
struct HList<C: RandomAccessCollection, V: View>: View where C.Element: Identifiable {
var data: C