Giter VIP home page Giter VIP logo

dart_pr_dashboard's People

Contributors

devoncarew avatar mosuem avatar

Watchers

 avatar  avatar

Forkers

devoncarew

dart_pr_dashboard's Issues

replace table impl. with an alternative one?

I have a flutter table implementation that I've used in a few projects. Any concerns w/ replacing the table implementation here w/ a different one? It has a few more built-ins for sorting, table column sizing and alignment, row + cell validation, ...

update the firebase backend from the command-line

We could consider writing a dart command-line app which can query github (for dart-lang PRs and issues) and update the firebase backend. The cli would need a github access token and the ability to write to the firebase project.

The code couldn't really be shared w/ the web app, as the web app would use the package:firebase_database apis and the cli would use package:googleapis. But having updates happen w/ a cli means we could put running it on a cron (either locally, or at some point as a Cloud Run scheduled job).

dashboard runtime exception

After recompiling the front-end w/o minification, I can see the stack trace for the issue:

TypeError: Instance of 'ParentData': type 'ParentData' is not a subtype of type 'FlexParentData'
     at Object.wrapException (http://localhost:8000/main.dart.js:8967:43)
     at Object._failedAsCheck (http://localhost:8000/main.dart.js:10508:15)
     at Rti._generalAsCheckImplementation [as _as] (http://localhost:8000/main.dart.js:10497:9)
     at Expanded.applyParentData$1 (http://localhost:8000/main.dart.js:134362:28)
     at MultiChildRenderObjectElement.attachRenderObject$1 (http://localhost:8000/main.dart.js:142300:28)
     at MultiChildRenderObjectElement.mount$2 (http://localhost:8000/main.dart.js:142251:13)
     at MultiChildRenderObjectElement.mount$2 (http://localhost:8000/main.dart.js:142420:13)
     at StatefulElement.inflateWidget$2 (http://localhost:8000/main.dart.js:141675:19)
     at StatefulElement.updateChild$3 (http://localhost:8000/main.dart.js:141434:26)
     at StatefulElement.performRebuild$0 (http://localhost:8000/main.dart.js:142025:41)

investigate using the 'reviews' API instead of pr.requested_reviewers

From https://stackoverflow.com/questions/44965073/how-do-i-get-the-list-of-reviewers-for-a-pull-request-using-github-api, the requested_reviewers field is the list of users from whom reviews were requested, but that list becomes empty as people accept their review.

I think we'll instead want to use the list of reviews for a PR - from https://api.github.com/repos/{owner}/{repo}/pulls/{pull_number}/reviews - and from each review get the associated user. Or perhaps union the two lists of users - pr.requested_reviewers and reviews.user?

toggling the theme button throws an exception

When toggling the theme button, we see an exception in the console, and one of the widgets no longer rebuilds:

Bad state: Stream has already been listened to.
  main.dart.js:24828     at Object.c (https://dart-pr-dashboard.web.app/main.dart.js:4363:3)
  main.dart.js:24828     at mV.Mc (https://dart-pr-dashboard.web.app/main.dart.js:37992:24)
  main.dart.js:24828     at eB.ey (https://dart-pr-dashboard.web.app/main.dart.js:38165:27)
  ...
Screenshot 2023-06-02 at 9 01 56 AM

I haven't looked at the code closely, but I suspect what's happening is that the theme toggle triggers a rebuild; a widget below that then re-subscribes to a stream and we see the exception above.

A very quick fix may be to just convert the stream to a broadcast stream.

But we may consider a slightly larger refactor; something like:

  • introduce a 'DartRepos' model class or similar
  • have that subscribe to the necessary firebase streams in an async init method
  • have it provide all the info to customer objects via ValueNotifiers (these often work a little better with general flutter UIs than stream based things)
  • have that model object be constructed at high level in the app's widget hierarchy (you'd probably want to use a StatefulWidget, and have the async init called in the initState method)

This would also address the re-subscription issue but would also let us remove some global variables.

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.