Skip to content

Instantly share code, notes, and snippets.

View regularberry's full-sized avatar

Sean Berry regularberry

View GitHub Profile
import UIKit
class MiddleView: UIView {
let titleLabel: UILabel = {
let label = UILabel()
label.font = .systemFont(ofSize: 20.0)
label.translatesAutoresizingMaskIntoConstraints = false
label.numberOfLines = 1
label.textAlignment = .left
label.text = "MIDDLE TITLE"
let quantity = CLSQuantityItem(identifier: "Score", title: "Score")
quantity.quantity = Double(score)
CLSDataStore.shared.mainAppContext.descendant(matchingIdentifierPath: identifierPath) { context, _ in
guard let activity = context?.currentActivity else { return }
activity.primaryActivityItem = quantity
CLSDataStore.shared.save()
}
import Foundation
import SwiftJWT
// Your ClassKit Catalog Key ID
let header = Header(kid: "<insert key id>")
// iss = your Developer Team ID
// iat - start time when the JWT is valid
// exp - when the JWT expires
let claims = ClaimsStandardJWT(iss: "<insert team id>", exp: Date(timeIntervalSinceNow: 3600), iat: Date())
func printJSON() {
let rootContext = Context(
data: Context.Data(
displayOrder: 0,
identifierPath: [Bundle.main.bundleIdentifier ?? ""],
isAssignable: false,
progressReportingCapabilities: [],
summary: "Fun tapper games for math and writing!",
title: "EduJam",
topic: "",
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
CLSDataStore.shared.mainAppContext.descendant(matchingIdentifierPath: [game.identifier]) { context, _ in
guard let activity = context?.currentActivity else { return }
activity.stop()
context?.resignActive()
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
CLSDataStore.shared.mainAppContext.descendant(matchingIdentifierPath: [game.identifier]) { context, _ in
context?.becomeActive()
if let activity = context?.currentActivity {
activity.start()
} else {
context?.createNewActivity().start()
@regularberry
regularberry / AppDelegateActivity.swift
Last active September 25, 2020 22:51
Opening ClassKit activity
func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
guard
userActivity.isClassKitDeepLink,
let identifierPath = userActivity.contextIdentifierPath,
let gameID = identifierPath.last
else { return false }
let gameVC = GameViewController(gameID: gameID)
import ClassKit
class ActivityCreator: NSObject, CLSDataStoreDelegate {
static let shared = ActivityCreator()
override init() {
super.init()
CLSDataStore.shared.delegate = self
}
// if you want a property to be atomic, we lost that in Swift. This enables that
final class Atomic<A> {
private let queue = DispatchQueue(label: "Atomic serial queue")
private var _value: A
init(_ value: A) {
self._value = value
}
var value: A {
get {
dismiss(animated: true, completion: {
referenceToUnderlyingViewController.doTheBusiness()
})