-
Notifications
You must be signed in to change notification settings - Fork 344
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Client side templates 3 #1216
Client side templates 3 #1216
Conversation
208534d
to
2717992
Compare
This comment has been minimized.
This comment has been minimized.
b05779b
to
b3d8dd0
Compare
I managed to reproduce the incompatibility in IndexedDB schema when upgrading:
And logging out does not seem to be sufficient because |
And looks like |
b3d8dd0
to
357b68c
Compare
357b68c
to
10f3619
Compare
10f3619
to
175222c
Compare
175222c
to
0e8d593
Compare
0e8d593
to
271b5f1
Compare
2918662
to
9ec030a
Compare
633550f
to
539ffed
Compare
539ffed
to
e1e24e0
Compare
I just finished porting the tag menu in the sidebar to real React – no more mutating its DOM with jQuery. We now have two JSX libraries React + I would like to get rid of DOM mutations eventually and use React everywhere but we are currently mutating the DOM all over the place. Fortunately, the conversion can be done piecemeal as demonstrated in We cannot really pass new data to the components when we process HTTP responses so we need to create |
6e8240f
to
f48398d
Compare
In preparation for removing the entire Navigation bar.
This one is little uglier since I need a way of passing errors to the form. I decided to do that by wrapping the form in a stateful component and setting the error through its method.
Had to disable react/no-render-return-value because we rely on it and React still uses sync rendering.
This is almost full port of Settings/Sources page to React. jQuery is now only used there for fadeout animation of elements that will be removed from DOM.
It is nightmare trying to edit all three objects at the same time. No changes were made other than the split and import wrangling.
I made the change to returning the original promise in 35de644 but that makes no sense. The error handler is already re-throwing the error so `then`s would not fire if that happened and `catch`es would fire too. The only thing this does is trigger an unhandled promise rejection from the rethrown error. Let’s revert the change and also use Promise.reject instead of throwing since throwing seems to confuse Firefox’s debugger sometimes.
It has not been used since the the switch to seek pagination.
Move filtering completely to filter method.
Building the entries UI in a single place (db) will make it easier to create it with React.
No more jsx-dom
Also use tinykeys so that we can reduce jQuery usage.
This will allow us to drive navigation using routes, greatly simplifying the control flow. It will also allow us to implement long requested features like having an URL for adding sources or searching easily. In fact search term is now part of URL. Also the mark all as read button is now disabled on the sources page.
We changed it to link on desktop for better coverage but forgot to do it on mobile, breaking it. Let’s remedy this now.
As per react docs: > We recommend using the exhaustive-deps rule as part of our eslint-plugin-react-hooks package. It warns when dependencies are specified incorrectly and suggests a fix.
We used to have this before.
We should just remove the old list while the new one is loading to make the interface cleaner. Also clearing a selected item is necessary to avoid navigation using shortcuts not working after switching to a different tag since the ui functions assume the selected item exists.
Rebased and will merge once CI passes. |
This is the last one. After this, we can start moving setting event handlers in jQuery onto the respective components and then finally switch to react or something.
Depends on #1215
Fixes #928