Skip to content

Instantly share code, notes, and snippets.

channels$: Observable<Channel[]>;
selectedChannel$: Observable<Channel>;
constructor(public channelService: ChannelService) {
this.channels$ = channelService.channelsChanged$;
this.selectedChannel$ = channelService.selectedChannel$;
}
private channelSubject$ = new BehaviorSubject<Channel[]>([]);
private get channels(): Channel[] {
return this.channelSubject$.getValue();
}
private set channels(val: Channel[]) {
this.channelSubject$.next(val);
}
var lastDoc: QueryDocumentSnapshot?
var listeners: [ListenerRegistration] = []
var query: Query = db.collection("channels").document("the doc id for this channel").collection("messages").limit(to: 25)
override func viewDidLoad() {
super.viewDidLoad()
addListener() // adds listener for first 25 messages
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
@michael-mckenna
michael-mckenna / concurrently_insert_update.swift
Last active June 13, 2018 16:19
Core Data Concurrency: Insert Or Update
let privateContext = CoreDataStack.generatePrivateContext()
// 1.
privateContext.perform {
// 2.
for userJSON in jsonResponse {
let id = user["id"] as! Int
// 3.
self.searchUserBy(id: 0, in: privateContext) { (user) in
@michael-mckenna
michael-mckenna / query_concurrently.swift
Last active June 29, 2020 03:47
Core Data Concurrency - Query
static func searchUserBy(id: Int, in context: NSManagedObjectContext, completionHandler: @escaping (_ managedObjects: User?) -> Void) {
context.perform {
//searching core data
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "User")
request.returnsObjectsAsFaults = false
request.predicate = NSPredicate(format: "id == %@", "\(id)")
do {
let results = try context.fetch(request)
if let managedObjects = results as? [NSManagedObject], let user = managedObjects.first {
@michael-mckenna
michael-mckenna / core_data_stack.swift
Last active June 29, 2020 03:45
Concurrency Core Data Stack
class CoreDataHelper {
// MARK: - Core Data Stack
lazy var applicationDocumentsDirectory: URL = {
let urls = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
return urls[urls.count-1]
}()
lazy var managedObjectModel: NSManagedObjectModel = {
@michael-mckenna
michael-mckenna / gist:0059eaf5093eddba2e4fdc7fb25a96f6
Last active August 2, 2017 18:10
Error: Sync feature not available
var express = require('express');
var app = express();
const Realm = require('realm');
// realm set up
const adminUser = Realm.Sync.User.adminUser('**');
var token = "***";
Realm.Sync.setAccessToken(token);
const AppointmentSchema = {
Logs:
Starting function
Changes in realm at: /globalUsers
Changes in Model: GlobalUser
- object inserted at position 4 : RealmObject { username: 'test', email: '[email protected]' }
Code:
console.log("Starting function");
// add your initialization code here
'use strict'
const moment = require('moment');
const Realm = require('realm');
// these two lines were copied and pasted from the email sent me after registering for the free trial
var token = "***";
Realm.Sync.setAccessToken(token);
// TODO: make this admin key an environmental variable