Giter Site home page Giter Site logo

zacsweers / catchup Goto Github PK

View Code? Open in Web Editor NEW
1.9K 47.0 199.0 17.52 MB

An app for catching up on things.

License: Apache License 2.0

Java 1.67% Kotlin 97.44% Shell 0.90%
dagger rxjava android reddit hackernews medium dribbble designernews producthunt kotlin

catchup's Issues

Use a DSL for services?

I'd like to try writing a DSL, and rearchitecting the way services are handled to something composition-based seems like a good opportunity

Licenses

Dependencies, but also sources for the vector assets

Test issue upload

Reported by @hzsweers

Description

Yay

App

Version: 0.0.1-2-ge5e64e2-dev
Version code: 797

Device details

Make: Google
Model: Pixel
Resolution: 1794x1080
Density: 420dpi (420)
Release: 8.0.0
API: 26

Screenshot

Logs

CatchUpApplication$onCr D Updating daynight
ServiceController$loadD D Data load - hn - took: 234ms
ServiceController$loadD D Data load - reddit - took: 220ms
CatchUpApplication$onCr D Firebase fetch succeeded
    CatchUpApplication D OnTrimMemory

Changelog (part 2)

I want to make the changelog actually show details from each release. The idea here would be to take the item itself and then raise/expand on click to reveal the (markdown-rendered) list of changes beneath it.

Apps that do this effect well include Plaid and Flamingo.

https://stackoverflow.com/a/38623873/3323598

Figure out proguard exceptions

I don't care about obfuscating, but optimization is nice. Thing is, proguard barfs on some random classes currently and I don't know why

Unexpected error while evaluating instruction:
  Class       = [android/support/v4/media/VolumeProviderCompat]
  Method      = [getVolumeProvider()Ljava/lang/Object;]
  Instruction = [39] istore_3 v3
  Exception   = [java.lang.IllegalArgumentException] (Value "android/support/v4/media/VolumeProviderCompat$1!" is not an integer value [proguard.evaluation.value.TypedReferenceValue])
Unexpected error while performing partial evaluation:
  Class       = [android/support/v4/media/VolumeProviderCompat]
  Method      = [getVolumeProvider()Ljava/lang/Object;]
  Exception   = [java.lang.IllegalArgumentException] (Value "android/support/v4/media/VolumeProviderCompat$1!" is not an integer value [proguard.evaluation.value.TypedReferenceValue])
Warning: Exception while processing task java.io.IOException: java.lang.IllegalArgumentException: Value "android/support/v4/media/VolumeProviderCompat$1!" is not an integer value [proguard.evaluation.value.TypedReferenceValue]

Client-side API

Similar to Muzei or DashClock. The idea would be that others could make extensions that provide data that could be shown in a section of the feed.

Figure out github query paging

I'm missing something about how endCursor is supposed to be included in fetching more results, currently complains when I try.

Warm up URLs heuristics

Could anything be done here?

  • first couple items of a service ("most interesting")
  • on press (but before letting go)

Bug reporting in debug

I've got a lens setup, just need to route it somewhere. Would be neat to use GraphQL to submit issues here.

  • Create a .graphql file for the issue creation
  • Create an Imgur service for hosting images
  • Format message nicely to markdown
  • Add tags dropdown? (possibly want to query these?)
  • Should only be an option when a github token with write abilities is present

Improving perf in list load

Some prior art in #18 #39

Currently there are some jitters in lists. Ideas for improving this:

  • Switch items to ConstraintLayout
    • I for the life of me can't get them to work every time I've tried. They look fine in the editor, then explode at runtime.
  • Switch to Litho
    • Probably most performant, but also pretty different
  • Arch components paging (#39)
    • Could be done in tandem with the rest here
  • Use spannablestrings for attribution and header texts to reduce view count
    • This could possibly make ConstraintLayout easier

Imgur support

Should extract image-based services to something generic and reuse for dribbble and imgur

Smmry redesign

  • full screen
  • reflow text transition of the title into toolbar
  • loading indicator turns into circular reveal of summary content

App shortcuts to specific sections

Because why not! Deeplink practice and learning shortcuts

Should default to the first 4, also have a setting to set them. Requires exposing available services keys in settings

About screen todos

  • Linkify and set the description text
  • Figure out remaining fling issues in collapsing anim (currently offsets don't always fire x_x)
  • Add a header to the licenses section
  • Gather repo IDs for things to show in license section, add mixins for the rest
  • Create .graphql query for nodes and hook up fetching. Cache until next app update
  • Crazy idea - Show a viewpager instead with two tabs. 1 - licenses, 2 - commit list of changes predating the current build timestamp/sha.

Smmry Controller instance state handling

Basically - it mostly "just works" right now other than that if it's already loaded, it will show the loader for a split second again before immediately hiding

Make available scrolling distance in about header more dynamic

Reported by @hzsweers

Description

Currently it is a fixed value based on available height, but we should factor in how quickly the content will get clipped to fade more aggressively if need be to avoid it.

App

Version: 0.0.1-2-ge5e64e2-dev
Version code: 797

Device details

Make: Google
Model: Pixel
Resolution: 1794x1080
Density: 420dpi (420)
Release: 8.0.0
API: 26

Screenshot

Logs

No logs provided

Remaining local storage TODOs

TODOs on this are to ultimately

  • get rid of having two CatchUpItems
  • possibly merge StorageBackedNewsController into the base news controller XOR pull out its loading functionality into something more pluggable and composable (i.e. have a "news loader" and possibly wrap it in a "storage-first loader". I think we probably want to do this in general to push service handling into the DI graph and merge the loading functionality of the dribbble and rest of items' loading.
  • It's not clear where things that already have their own baked in caching like Firebase and Apollo fit into this, or if they should just force freshness and let this handle it all for consistency.
  • Migrate remaining controllers that don't have their own caching to this. Reddit, Medium, Slashdot.
  • Should indices be used in Room?

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.