GitXplorerGitXplorer
H

Dashfjord

public
3 stars
0 forks
0 issues

Commits

List of commits on branch master.
Unverified
a33e910e76b7de99b55770d0b4436ca3c8167844

Merge branch 'master' of github.com:HT154/Dashfjord

HHT154 committed 7 years ago
Unverified
929bc3cd41bbba020d118b85809e033d58c4ce70

Moved depencies into frameworks folder

HHT154 committed 7 years ago
Unverified
d97024d588b4848fe04712b080ddd44b4cab3ad7

Create LICENSE

HHT154 committed 8 years ago
Unverified
5e50692ddb4f5f3dfe906dbeec82feab2d2fffa1

Update README.md

HHT154 committed 8 years ago
Unverified
ad364479215bedf9fe7f3418945d7283ef382bee

Added readme and in-code OAuth key placeholders.

HHT154 committed 9 years ago
Unverified
63afa2b71c385ce19dba7f4f5dc9924f0a9cbfb9

Initial commit on clean repo to scrub API keys.

HHT154 committed 9 years ago

README

The README file for this repository.

Dashfjord

Dashfjord is an as-complete-as-possible native OS X reimplementation of the Tumblr Dashboard written almost entirely in Swift. Because some parts of the Tumblr API are locked down to first-party apps only (messages, activity, replies), they couldn't be included herein.

Building

The project builds in Xcode 7.3.1. Insert you OAuth consumer key and secret in AppDelegate.applicationDidFinishLaunching(_:). Dashfjord can complete the full three-legged OAuth flow and stores the obtained tokens in the OS X keychain.

Caveats

I haven't actively developed Dashfjord for a few months. The language itself has changed significantly and I've started using Swift on the job since most of this code was written, so this code likely doesn't reflect accepted Swift patterns or my own current understanding of the language.

A few things are left unimplemented, including inline audio and video media playback, handling of embeds in post bodies, and any manner of persistence. While the rendering is otherwise quite complete (and in some ways more accurate than the first-party Tumblr iOS app), there are bugs.

Stuff I'm proud of

  • TrailContentView - a custom NSStackView-based HTML renderer.
  • APIRequest - handles API request construction, execution, and data conversion upon completion.
  • The data model classes themselves actually handle their instantiation from the JSON API data. I'd probably avoid this in the future, but it works well enough here.
  • The architecture is somewhat odd (it was created on-the-fly, after all), but is mostly resembles Cocoa's MVC example. In an evironment where view and model are so intricately linked, this was a boon.

Libraries

Things I'd do differently next time

  • Proper local persistence using Core Data or Realm
  • Better-defined data flow
  • Combining the previous two, a client that syncs
  • Better and persistent image caching, likely using an mmap-backed cache