To avoid calling `setting.Get` excessively, we'll do the following:
(a) Call `setting.Get` once per encountered channel, and stash it.
(b) Before sending **each** comment **with a tip**, call `setting.Get` again to get the latest `min_tip`. Report any over- or under-paid values in the confirmation widget before user hits Send.
(c) For regular comments (no tips), just send as normal based on stashed data from `a`.
- If `min_tip` was `0` but creator later changed to non-zero, Commentron would trigger an error anyway, and the app can get the latest `min_tip` amount to inform the user.
- If `min_tip` was not `0` but creator later changed to `0`, the app would be incorrectly forcing the user to pay based on the old amount from `a`. But when he hits `b`, he now knows he has overpaid, and can still cancel.
## General
- `setting.List`: returns full creator settings. Requires signature (i.e. you own the channel)
- `setting.Get`: returns a public subset of the creator settings. No signature required, and it is mainly used by the GUI to determine the constraints of a channel (e.g. comments enabled? min tip requirements? etc.). Does not include private settings like "blocked words list".
`doFetchCreatorSettings` will handle both of these. Clients that uses the stashed results (`settingsByChannelId`) just needs to be aware the result might not contain everything, depending on whether you own the channel or not.
## Misc Related Changes
- Finally fix the reducer for COMMENT_FETCH_SETTINGS_COMPLETED to not purge the data on each call.
- Change `doFetchCreatorSettings` to operate on a single channel instead of multiple. We ended up not using the multple mode anyway, so it was wasteful code trying to batch the promises.
- `commentsDisabledChannelIds` is no longer needed. Previously, this was created just to differentiate between Creator (full) and Channel (subset) settings. It's cleaner to just use one object, so eliminated this.
- Remove unused 'commentingEnabled'.
## Aside
- There are now 2 ways to know if a channel has disabled comments: (1) from `comment.list` and `setting.Get|List`. Both of them updates `settingsByChannelId`, so it'll still be a single place for the GUI to check against.
## Changes
1. Add hint on adding "Closes", "Fixes", etc. keywords to directly update the Issue state when the PR gets merged
2. Collapse "PR Checklist" and "PR Type".
- With the assumption that these 2 items are mainly reminders for contributors, and that reviewers will typically only look at it one time, we collapse these sections to reduce clutter in the PR description.
## Issue
`https://github.com/lbryio/lbry-desktop/issues/6369#issuecomment-882081892`
## Changes
- Replace 'feed' with 'node-rss' for itunes spec support.
- Replace content type from 'rss+xml' to 'xml' so that the browser will display it nicely using the document tree without us having to re-format it ('node-rss' does not). Seems like all feeds that I found does it this way.
- There is no need to escape characters now that 'node-rss' does it. Nice.
## Issue
5951: OG messed up if `$"` is in title
The replacement string would contain `...$"...`. The character `$&` has special meaning in `replace`, so the output was messed up.
## Approach
Use a direct slice approach. A bit less elegant.