Giter VIP home page Giter VIP logo

grove's Introduction

Grove

GitHub client for iOS. Work in progress.

A neat RCOS project.

grove's People

Contributors

mxms0 avatar jboulter11 avatar frostbitee08 avatar hggz avatar

Stargazers

seb avatar

Watchers

Dustin L. Howett avatar  avatar  avatar  avatar  avatar  avatar

grove's Issues

Readme..??

A Github project with no readme? Cmon guys

Heavily enforce If-Modified-Since inside of GSNetworkManager

Use HTTP E-TAG If-Modified-Since and store dates everywhere so that way we can tell if data has changed anywhere in GSNetworkManager instead of requesting serializing and comparing data several times for no reason. Not sure if this will work with APIs though, since im pretty sure that stuff is generated everytime. meh

-[GSObject update] should return self, maybe.

-[GSObject update] is asynchronous, and when I see it being used, is when GSGitHubEngine returns a cached object which should be receiving new data. However, this may be confusing, and lead to unreliable data, in the case that a user starts reading data from properties while the GSObject starts writing new data. I could put a lock around _configureWithDictionary (all of the setters), but to put a lock around all of the getters would be highly irritating.

Need better way to save user login information

GRSessionManager stores GRApplicationUser's (which also store GSUsers) which are all NSCoding (and NSSecureCoding) compliant. This allows us to save the GSUser object, but i don't really like this. Until I figure out a better method, the foremost issue about saving users persists that I'm saving it to NSUserDefaults which is bad. Store these better perhaps in a file, and also use new FS protections so users can get oauth tokens from disk if theres no a lack of integrity in iOS.

GSCacheManager improvements

Consider:
– Caching objects in memory after reading from disk
– Allowing memory cache limit and flush cache functionality
– Add option for memory caching in genreal
– Return object in method if it's available locally, otherwise fetching and returning through completion handler e.g.,

  • (UIImage *)findImageAssetWithURL:(NSURL *)url completionHandler:(...)block {
    UIImage *val = cacheTable[url];
    if (val) return val;
    ... otherwise go through normal routine ...
    }

GSUser's should be lightly cached somewhere

The GitHub API returns sparse information on users when its necessary, and asking the github engine to fill in information for an object provides a bad and unclear API (and should be used as infrequently as possible). This way, if you request a gist, and it provides 2 fields about the user, the gist init method should try to find the instance of the user already in memory with all its fields filled in.

Maybe GSUser shouldn't store any data either... but I don't like that so much. Perhaps all GSUsers have no data by default (except the bare minimum), and when GSGitHubEngine gets a request for that data, fills it in. but egh

Need Proper Markdown Viewer

Need proper markdown interpreter/viewer with image support for README files. Right now Its all just rendering in plaintext which'll do fine for a few days.

Disabled repositories return 404

Currently github API returns 404 on disabled repositories, however the web returns an accurate result. Need a method to report accurate data to user about disabled repositories.

Serialized objects are incomplete and missing important properties

Properties defined in the protocol are missing, for example GSGist and everything declared here. https://developer.github.com/v3/gists/

GSOrganization is also incomplete, GSUser perhaps as well. The list goes on.

NOTE

If any of the properties start with api.github.com, they are INTERNAL** properties and shall be defined inside of the internal header only. This allows the user to allow the framework at a higher level and not care about this stuff, so only the github engine need worry about it.

GSGitHubManager needs thread consistency

GSGitHubEngine calls the completion handler from whatever thread it feels like. We should consider making it consistent and popping it onto a standard thread. Not sure if background thread or whatever .

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.