Skip to content

Instantly share code, notes, and snippets.

View ericlewis's full-sized avatar

Eric Lewis ericlewis

View GitHub Profile
import * as SecureStore from 'expo-secure-store';
import AsyncStorage from '@react-native-async-storage/async-storage';
class EphemeralSecureStore {
static prefix = "EphemeralSecureStore";
static getEphemeralKey(key) {
return `${this.prefix}_${key}`;
}
@ericlewis
ericlewis / ContentView.swift
Last active May 10, 2023 13:11
Dynamic Island Progress Demo in SwiftUI. Demo here: https://twitter.com/ericlewis/status/1656283504747880451
import SwiftUI
let size: CGSize = {
return .init(width: 126.0, height: 36.9)
}()
let origin: CGPoint = {
return .init(x: UIScreen.main.bounds.midX - 0.3, y: 29.4)
}()
@ericlewis
ericlewis / .directions.md
Last active October 25, 2023 18:25
A conversational chatbot experience.

Prerequisites

  • API key for OpenAI.
  • API key for Picovoice
  • API key for ElevenLabs
  • mpg123 installed
  • node 18+

Directions

  • git clone https://gist.github.com/ericlewis/ccd3f0b7a17fcbe2473121a473082c8f
  • edit .env with your keys
@ericlewis
ericlewis / WKChatGPT.swift
Created December 22, 2022 18:58
A way of using ChatGPT with SwiftUI
import SwiftUI
import WebKit
// MARK: Observable Object
public class Chat: NSObject, ObservableObject {
internal var webView: WKWebView
private var decoder: JSONDecoder = {
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
@ericlewis
ericlewis / index.js
Last active June 29, 2022 06:07
Example of having Morgan Freeman explain what code is doing using OpenAI Codex DaVinci & Uberduck's style transfer APIs.
import { Configuration, OpenAIApi } from "openai";
import download from "download";
import ora from "ora";
import soundPlayer from "play-sound"
import prompts from "prompts";
// Get your own keys, nerd.
const kOpenAI = "YOUR_API_KEY";
const kUberDuck = "PRIVATE_KEY:PUBLIC_KEY";
extension Published: Encodable where Value: Encodable {
public func encode(to encoder: Encoder) throws {
var container = encoder.singleValueContainer()
let value = _PublishedValueExtractor.shared.extractValue(from: self)
try container.encode(value)
}
}
fileprivate struct _PublishedValueExtractor {
static let shared = _PublishedValueExtractor()
@ericlewis
ericlewis / CodableAppStorage.swift
Last active February 2, 2024 07:19
Using Codable with AppStorage, the easy way!
import Foundation
import SwiftUI
// MARK: Demo
struct Example: RawRepresentable, Codable {
let id: UUID
}
// This is functionally the same as above, but we have a neater type without creating a new protocol.
import SwiftUI
import swiftui_betterpicker
struct GridPickerView: View {
enum Colors: CaseIterable {
case red
case blue
case green
case purple
case yellow
import SwiftUI
import swiftui_betterpicker
struct ListPickerView: View {
enum DayOfWeek: String, CaseIterable {
case monday, tuesday, wednesday, thursday, friday, saturday, sunday
var title: String { rawValue.localizedCapitalized }
}
@State
@ericlewis
ericlewis / !BetterTextFieldStyle.md
Last active February 19, 2022 04:31
Experimental library for creating useful TextFieldStyles in SwiftUI.

Install via SPM per usual. Supports iOS 13+. MIT License.