Commit graph

3603 commits

Author SHA1 Message Date
Sean Yesmunt
27c7a8a31e comment out swap button until api is ready 2021-04-13 14:08:25 -04:00
infinite-persistence
e9c386678b Don't link to external blockchain explorers
It's unclear whether the use is ok or not without consent. Etherscan.io says consent is required.

Better be on the safe side.
2021-04-13 14:02:25 -04:00
infinite-persistence
f94f98e0f3 ViewPastSwaps: limit to 10 entries + other fixes
(1) Due to IAPI/commerce query limit, and also to not pollute the wallet with infinite chargeCodes, we'll only show the last 10 swaps. Beamer mentioned that it's possible to tracked back the past chargeCodes of the user, and potential provide a `list` endpoint to handle disputes.

(2) If a user explicitly removed an entry, don't repopulate that entry even if websocket returned an updated status for it. While it might be useful to handle accidental removals, it looks weird when the list gets repopulated with 'Expired' entries.

(3) Add sanitization when repopulating the chargeCodes from the wallet data (i.e. remove 'null' entries).

(4) Always repopulate the list per wallet data so every instance looks the same.
2021-04-13 14:02:25 -04:00
infinite-persistence
ca40e0287b Swap the order of LBC vs BTC as the entry point 2021-04-13 14:02:25 -04:00
infinite-persistence
7cf5c1f6fe CoinSwap: websocket + multi-coin
- For the active swap, switch from polling to websocket. The returned data is now the Charge data from the commerce, so some parsing will be required.

- Allow the user to send other coins that the commerce supports.

- Only save the 'chargeCode' to the wallet. The other data can be repopulated from this.

- Store the receipt currency. I'm not sure if the commerce supports sending bits from various coins. Take the coin that came with the 'COMPLETED' message for now.

- Fix 'lbc' calculation to match IAPI side.

- Allow users to see full detauls from "View Past Swaps".

- String cleanup

- GUI cleanup.
2021-04-13 14:02:25 -04:00
infinite-persistence
d1e83fcee2 Run doNotificationSocketConnect for CoinSwapStatus 2021-04-13 14:02:25 -04:00
infinite-persistence
a76f4e4dfe Fix table wrapping
Wrap second column instead of making it scroll horizontally.
2021-04-13 14:02:25 -04:00
infinite-persistence
23072f1a46 Coin-swap: Handle "Confirming" state 2021-04-13 14:02:25 -04:00
infinite-persistence
7c25de1e58 Coin-swap: require authentication
While it would be nice if we can swap anonymously through Desktop, the IAPI will tie a wallet address with an account. Final decision is to require authentication.
2021-04-13 14:02:25 -04:00
infinite-persistence
d63cb0dc2d Past swaps: show the amount of BTCs that we are waiting for. 2021-04-13 14:02:25 -04:00
infinite-persistence
b2630f6f21 Save entire swap info instead of just the address.
- Users should be able to see the entered and promised amount, otherwise they might forget how much to send over.
- This change also prepares for the future upgrade to support multiple coins.
2021-04-13 14:02:25 -04:00
infinite-persistence
9c808e2b5e Implement Swap BTC page 2021-04-13 14:02:25 -04:00
infinite-persistence
8e6604cfa6 Add blank Swap page 2021-04-13 14:02:25 -04:00
infinite-persistence
28260c27d1 SendLBC: switch from Modal to Page 2021-04-13 14:02:25 -04:00
infinite-persistence
5d31dc536c ReceiveLBC: switch from Modal to Page 2021-04-13 14:02:25 -04:00
zeppi
fbff266b28 add br mindblown icon 2021-04-13 13:22:02 -04:00
Sean Yesmunt
a23f0cb30f add back tags search 2021-04-13 13:21:44 -04:00
Sean Yesmunt
bf24bd3193 fix related button toggle color on dark mode 2021-04-12 21:43:41 -04:00
infinite-persistence
3406c2f800 Wunderbar: handle 'shift+home' key not highlighting text
## Issue
- Patch for 5316: "Home and End keys not working in search box"

## Notes
Seems like 'shift+home' wasn't highlighting the text. 'shift+end' works.

Was pretty sure I tested that previously. Anyway, adding the direction variable seems to fix it.
2021-04-12 14:58:42 -04:00
infinite-persistence
294866fb4b Search: fix 'x' appearing incorrectly
- Need to handle the 'undefined' case. The change will cover undefined, null and blank string (blank string === 'All').
2021-04-12 14:58:25 -04:00
Sean Yesmunt
216d0fefa0
fix typo 2021-04-12 13:14:20 -04:00
Sean Yesmunt
e08b71774c pre-roll ads 2021-04-12 12:55:06 -04:00
Sean Yesmunt
ae980bc142 use isChannel from parseURI 2021-04-12 12:24:04 -04:00
zeppi
57dfaab1ea fix show yrbl empty 2021-04-12 12:24:04 -04:00
zeppi
eea3497845 fix publish something empty 2021-04-12 12:24:04 -04:00
seanyesmunt
f5125b25c2 update livestream eligibilty
add CHANNEL_STAKED_LEVEL_LIVESTREAM to config set to level 5
use odysee_live_enabled tag on users insead of experimental_ui
2021-04-12 11:17:17 -04:00
infinite-persistence
47c2d4633d ReportCreate: Fix anonymous url prefix
## Issue
5857 Channel does not update on display when reposting (but actually does)
2021-04-09 17:05:20 -04:00
infinite-persistence
f344096da4 SearchOptions: label fixes
## Issue
5842: search filters fall out
2021-04-09 11:27:25 -04:00
infinite-persistence
fb839b92ef Only apply Staked Levels to Comments (allow it in Posts)
Blocking videos and images was too limiting, plus the system was intended to block spammy comments in the first place.
2021-04-09 11:27:07 -04:00
infinite-persistence
5bc462927a SimpleImageLink: simplify + use 'src' as last resort
- The icon makes the screen too busy when there are lots of images in a page.

- Use src as the last resort for the text (I though `title` and `alt` was mandatory in markdown; apparently not).
2021-04-09 11:27:07 -04:00
infinite-persistence
20a28865fe Fix "channel levels" being applied to all MarkdownPreview usages.
`stakedLevel` is only provided when needed (comments, etc.), so when it's null, resume normal operation.
2021-04-09 11:27:07 -04:00
infinite-persistence
3bab4feeca Update GUI to use queried notification filter.
- Re-organize the return statement of 'NotificationsPage' a bit, otherwise the entire page will reload (blink) every time the drop-down value is changed due to the 'fetching' flag.

- Retained the original behavior of (only showing a blank page + spinner) on the very first load. I think there is merit in not showing the buttons immediately (e.g. when not logged in and `/$/notifications` is accessed directly).
2021-04-08 14:28:21 -04:00
infinite-persistence
b8ec0c9967 Augment doNotificationList to get a filtered list.
Initially, the filtered list was done at the component level, and the list was simply a subset of `notifications`. But due to the limit issue explained in 5694, we now query the filtered list instead.

Considerations:
- The filtered list could contain items not listed in the 'All' list. We could add a string at the bottom of 'All' that says "not all items retrieved" if this confuses the user.
- The unseen count needs to be based on 'All' and not the filtered one, so that data needs to be stashed somehow (can't re-use the array).

Use 2 arrays for now instead of trying to accumulate "all" and "filtered" into 1 array.
2021-04-08 14:28:21 -04:00
infinite-persistence
4252db91f9 Add new notification filter api params 2021-04-08 14:28:21 -04:00
seanyesmunt
fbd90b8f3e style pass 2021-04-08 12:40:07 -04:00
saltrafael
1d74b364e5 Keep just More From for now 2021-04-08 12:40:07 -04:00
saltrafael
6718d87848 Recommended bar: extra options for ease of discovery 2021-04-08 12:40:07 -04:00
seanyesmunt
6ccbbebad9 limit simple site search options to just video and text 2021-04-07 14:13:40 -04:00
seanyesmunt
6718f153a9 style pass 2021-04-07 12:08:17 -04:00
infinite-persistence
72443d4d2e Reset the search page when options changed. 2021-04-07 12:08:17 -04:00
infinite-persistence
8111b8d9dc Only concatenate results if 'from !== 0' 2021-04-07 12:08:17 -04:00
infinite-persistence
340c883ac7 Disable 'last hour'
Requires further work in IAPI
2021-04-07 12:08:17 -04:00
infinite-persistence
855ae15a27 Search: infinite scroll 2021-04-07 12:08:17 -04:00
infinite-persistence
5421a64b65 Revamp search filters
## Issue
4945: Simplify / revamp search filters for odysee (and lbry.tv)

## Changes
- Tweaked the "claim type = file | channel | everything" a little to hopefully make it more intuitive.
- Added "Sort By".
- Added "Upload Date".
- Fixed the affected files to handle both Desktop and Odysee.
- Tweaked the layout to be more condensed so that we can see some results as we change the filter.
- Added animations.
- Added "Exact match" option that helps user to surround with quotes.
2021-04-07 12:08:17 -04:00
infinite-persistence
a9cae23d87 getSearchQueryString: add "time_filter" option 2021-04-07 12:08:17 -04:00
infinite-persistence
2cc049bb83 getSearchQueryString: add "exact" option to include surrounding quotes. 2021-04-07 12:08:17 -04:00
infinite-persistence
dc06e2da99 getSearchQueryString: add "sort_by" options 2021-04-07 12:08:17 -04:00
infinite-persistence
1ee05d1f7f getSearchQueryString: customizations for SIMPLE_SITE.
- This change makes it work for both Desktop and Odysee. When merging back to Odysee, just take the file from `master` (barring any changes from someone else).

- Given that we'll be opening up the search filter for Odysee, the only "simple site" customization that was back-ported is `free_only=true`.
2021-04-07 12:08:17 -04:00
infinite-persistence
c73ba60ef5 Revert "Use blank poster and advisory when preview is blocked by insufficient stake."
This reverts commit 9d1cf97aef.
2021-04-07 00:39:35 -04:00
seanyesmunt
e23a6f3cd6 fix notice-message spacing on livestream page 2021-04-06 17:20:21 -04:00
seanyesmunt
15fea9fe1f fix livestream comment spacing 2021-04-06 17:01:31 -04:00
seanyesmunt
e3ea004f67 revert e3a478adc3 2021-04-06 15:42:27 -04:00
seanyesmunt
0d41e6d88d Revert "Simplify language lists"
This reverts commit 27d43b2b41.
2021-04-06 15:42:27 -04:00
Stefan Sundin
d5ba66ca1a Add a min-width to the "Automatic dark mode" inputs to stop UI shifting when clicking the "24-hour clock" checkbox. I have no idea where this should go so I just put it somewhere. 2021-04-06 13:00:10 -04:00
Stefan Sundin
aff8cfdf9c Fix the "Automatic dark mode" labels having the same name. Now the correct input is selected when clicking the "To" label. 2021-04-06 13:00:10 -04:00
Stefan Sundin
56d4a677a5 Also format the "Automatic dark mode" clocks. 2021-04-06 13:00:10 -04:00
Stefan Sundin
039264531f Add 24-hour clock setting. 2021-04-06 13:00:10 -04:00
infinite-persistence
f3869ddb78 Markdown: inline image preview for Level 4 and above only 2021-04-06 12:55:33 -04:00
infinite-persistence
9d1cf97aef Use blank poster and advisory when preview is blocked by insufficient stake.
## Issue
- Redo 5636: Disable video previews in comments/posts made by channels below a certain channel staked level
- Closes 5738: expand video preview level requierment to markdown images also
2021-04-06 12:55:33 -04:00
infinite-persistence
2a31678632 Fix tooltip not working in <Icon>
According to https://stackoverflow.com/questions/10643426/how-to-add-a-tooltip-to-an-svg-graphic, the tooltip needs to be a child `title` element, not the attribute.
2021-04-06 12:55:33 -04:00
Sean Yesmunt
7c83fa662c
bump comments length to 75 2021-04-05 21:45:42 -04:00
Sean Yesmunt
707ad5d4de re-enable pdfs on web 2021-04-05 15:06:56 -04:00
Sean Yesmunt
a99042b60b remove extra comment 2021-04-05 15:06:56 -04:00
Sean Yesmunt
822ab329ac undo my weird changes - simplify logic 2021-04-05 15:06:56 -04:00
infinite-persistence
51bbda75ee Sort the language list (correctly) 2021-04-05 14:45:21 -04:00
Sean Yesmunt
64928213bf fix websockets not reconnecting
When it gets closed, even for errors, it doesn't always go into Socket.onerror. Add the reconnection logic back to just onclose (like it was before)
2021-04-05 14:33:37 -04:00
Sean Yesmunt
4a33e4dce5 style updates 2021-04-05 14:32:37 -04:00
saltrafael
3e1f6cdf4d Highlight comments made by content owner 2021-04-05 14:32:37 -04:00
zeppi
3c3fc90b6a review changes 2021-04-05 13:26:52 -04:00
zeppi
14685e11af clean up publishing on desktop 2021-04-05 13:26:52 -04:00
zeppi
9468f2b0f2 update master with some odysee changes 2021-04-05 13:26:52 -04:00
infinite-persistence
bfcdbd575f Sort the language list
I think using the 'values' for the keys should be fine since each language name is unique. A key-clash would also help us catch mistakes like not differentiating sub-languages if support any (e.g. "English" vs. "English (British)")

Had to cast to String for lint.
2021-04-05 01:56:49 -04:00
infinite-persistence
b17ba20fd5 Change: 'Wikang Filipino' --> 'Filipino'
I think both are acceptable, but the latter seems more popular. Doing this change as we'll be sorting the list.
2021-04-05 01:56:49 -04:00
Jeremy Kauffman
281fad7382 copy pass 2021-04-04 23:32:47 -04:00
Sean Yesmunt
21ad5077f7 add helplbrysavecrypto prompt and fix file page UI bugs 2021-04-04 23:32:47 -04:00
Sean Yesmunt
3cdeb98ea8 fix date on short post titles
always send it to a new line
2021-04-04 23:32:47 -04:00
infinite-persistence
52f068cead Add: Japanese, Afrikaans, Filipino, Thai and Vietnamese
## Issue
Closes 5646: Add more completed language translations

## Notes
SDK uses RFC 5646 format, which led me to
https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry. Took the codes from here. They match what's already used in Transifex, so that's good.
2021-04-04 22:54:33 -04:00
infinite-persistence
81e4730037 Simplify language lists
- SUPPORTED_SUB_LANGUAGE_CODES[] that I introduced was pretty redundant when SUPPORTED_LANGUAGES[] already hold the information. The logic to ignore sub-languages (i.e. reduce the locale's "en-GB" to "en" is now located in getDefaultLanguage()).

- SUPPORTED_BROWSER_LANGUAGES[] and SUPPORTED_LANGUAGES[] look so similar and hard to tell what the former is for at first glance. The functionality to map 'zh-CN' to 'zh-Hans' is now handled by resolveLanguageAlias(), which makes the intention clearer.

This leaves us with a single list -- SUPPORTED_LANGUAGES[], whose key also tells us the desired language code to use.
Also, clients now need to call `resolveLanguageAlias` to map any language code aliases, as they differ depending on how it is queried (e.g. `navigator.language` vs. `app.getLocal()` uses different standards).

I think we no longer need to explicitly migrate existing user's 'zh-CN' into 'zh-Hans' because the rest of the system will always use the desired language code as long as 'resolveLanguageAlias' is called appropriately. e.g. the system uses `selectLanguage` and `selectLanguage` calls `resolveLanguageAlias`.
2021-04-04 22:54:33 -04:00
Louis Sandoval
d58d96b8dd Fixes #5822 display of upload date and view count on smaller screens 2021-04-04 22:51:07 -04:00
Sean Yesmunt
105fe85504 more robust check on channel name 2021-04-04 22:16:45 -04:00
Sean Yesmunt
03ef30eb40 claim email_verified reward on channel/new page 2021-04-04 22:16:45 -04:00
Sean Yesmunt
650ce42dc0 open livestream channel create redirect in new tab
so users can keep the stream going while they do sign up stuff
2021-04-04 22:16:45 -04:00
DispatchCommit
bb56de1d4f fix scrolling issue, limit length of chat history 2021-04-04 21:43:44 -04:00
Stefan Sundin
92e55c7d5f Add a title with the exact date to dateTime elements that use timeAgo. 2021-04-03 00:32:06 -04:00
Sean Yesmunt
ac18b85c34 sandbox iframe react component 2021-04-02 18:11:23 -04:00
Sean Yesmunt
991b45d831 fix typo
took commit from #5790 since it was merging into the odysee branch
2021-04-02 16:17:50 -04:00
Sean Yesmunt
ddd6a8d191 i18n 2021-04-02 15:44:00 -04:00
r0ckinn
e1531b03bf minor improvement: if not live yet, say users are waiting instead of watching 2021-04-02 15:44:00 -04:00
infinite-persistence
f0d0992d20 Fix broken video embed
## Issue
Closes 5811: Video-embed in markdown-post is broken

- Revert "Fix 'makeSelectIsPlaying' to look at 'playing' instead of 'primary'." dabdc980a1.
- Revert "Fix 'isPlaying' to reflect 'playing' instead of 'primary' URI" 351890decf.

Reverting means "Deleting MD from downloads list causes spinning icon to run forever 4959" gets re-opened, but this is a way less severe issue to leave in.
2021-04-02 14:44:22 -04:00
infinite-persistence
d279d70770 Fix autoplay in floating mode
Closes 5000: AutoPlay in Floating Player only works one time

Factor out the code that queries the recommendation. It needs to be called in two places:
(1) `RecommendedContent` - need to cover the case of floating player + visit another video page.
(2) When video is floating and autoplayed the next video.
2021-04-02 14:35:18 -04:00
jessopb
8ab0bcd545
clear publishing on publish load (#5807) 2021-04-02 11:55:41 -04:00
jessopb
9cd86be04f
use show mature selector (#5803) 2021-03-31 16:55:26 -04:00
infinite-persistence
4a0aea15a6 i18n: missing translation + emoji fixes 2021-03-29 15:50:21 -04:00
infinite-persistence
2037dfbd03 prepareEdit: ensure 'incognito' is false when channel is active.
## Issue
Closes #5720: Edit: channel-selector should re-populate with original channel

## Notes
'incognito' was not set to false, causing the 'ChannelSelector' to select Anonymous.
2021-03-29 08:42:58 +08:00
zeppi
5982b61f0d oops 2021-03-26 18:43:09 -04:00
zeppi
ad10250e16 review changes 2021-03-26 18:43:09 -04:00
zeppi
9e86cab4eb fix livestream redirect to dashboard 2021-03-26 18:43:09 -04:00
zeppi
8755c634ad bugfix 2021-03-26 18:43:09 -04:00
zeppi
777566f414 replace instead of push on publishform 2021-03-26 18:43:09 -04:00
zeppi
713109167c publish, edit, remote_url publish 2021-03-26 18:43:09 -04:00
zeppi
c546589cc5 copy changes 2021-03-26 18:43:09 -04:00
zeppi
f691643eb7 ls help title copy 2021-03-26 18:43:09 -04:00
zeppi
6c137fc0fd improve loading for livestream setup 2021-03-26 18:43:09 -04:00
zeppi
76a5fe0d83 add help to livestream setup 2021-03-26 18:43:09 -04:00
zeppi
f091da3c54 use new isLivestream (placeholder stream) selector 2021-03-25 20:14:24 -04:00
zeppi
da60104c96 pending and publish 2021-03-25 16:40:17 -04:00
zeppi
7fdc3d2919 fix crash on invite page 2021-03-25 16:38:25 -04:00
zeppi
33c325031d check simplesite for notifications 2021-03-25 15:54:30 -04:00
infinite-persistence
e70eb3b5bc Tip-unlock: add tooltip and related strings 2021-03-25 15:35:53 -04:00
infinite-persistence
5d4828514c Improve mature-tagging message
## Issue
Closes 5747: Typo on Create Livestream page
2021-03-25 15:35:53 -04:00
zeppi
ba4a29c102 hide livestream claims in previews if no flag 2021-03-25 15:31:31 -04:00
Sean Yesmunt
64e8c8e095 use comment component for livestream comments 2021-03-25 15:08:05 -04:00
zeppi
d8a5ca082b no livestream price on odysee 2021-03-25 13:53:42 -04:00
zeppi
4269a63f62 no mature on simple site 2021-03-25 01:56:21 -04:00
zeppi
81b9b0d801 copy for buttons and modals for livestream
redirect on success to dashboard
2021-03-24 13:36:50 -04:00
zeppi
995f51711f use pending livestreams on dash, filter modes 2021-03-24 13:36:50 -04:00
zeppi
137c268a7b add livestream icons 2021-03-24 12:13:26 -04:00
infinite-persistence
43965ddf72 i18n: Livestream strings 2021-03-24 09:09:24 +08:00
infinite-persistence
a36a8023c7 Support = Boost | Tip
## Issue
Closes 5226: Figure out odysee-friendly way to re-enable supports

This essentially re-enables staking (now called "Boost") for Odysee.
2021-03-23 20:01:55 -04:00
infinite-persistence
3b960aa0a0 Back-port changes from Odysee to master 2021-03-23 20:01:55 -04:00
Dispatch
d362fe0d75
hide livestream on upload form if not experimental UI (#5735) 2021-03-23 13:27:30 -04:00
zeppi
f2e17f8566 fix dmca 2021-03-22 21:19:53 -04:00
Dispatch
a258fcb039
Merge pull request #5691 from lbryio/feat/go-live
[feat] Add LiveStreaming Support
2021-03-22 16:48:10 -07:00
Thomas Zarebczan
b261763402
Add note about editing while transfer is active 2021-03-22 18:56:50 -04:00
DispatchCommit
ec996d8bf7 this has to fix the linting issue 2021-03-22 15:48:56 -07:00
DispatchCommit
a4a714a561 please work this time 2021-03-22 15:42:51 -07:00
DispatchCommit
3446b63768 coerce null to empty string for flow
this is a bad way to satisfy flow, probably, but it'll work.
2021-03-22 15:30:30 -07:00
DispatchCommit
7a327596cd i hate flow 2021-03-22 15:30:29 -07:00
DispatchCommit
49395a8a05 remove unused import 2021-03-22 15:30:28 -07:00
DispatchCommit
8ae7247c35 remove unused variables from LiveStreamSetup 2021-03-22 15:30:27 -07:00
DispatchCommit
0ec31d3c29 fix slow mode chat
set last comment time when comment is submitted
2021-03-22 15:30:26 -07:00
DispatchCommit
f18ad64527 use new livestream iframe embed 2021-03-22 15:30:25 -07:00
DispatchCommit
1e0afd1b86 Add live detection to livestream page
- reduce interval from 15 seconds to 10 seconds
2021-03-22 15:30:24 -07:00
DispatchCommit
816bd07570 Improve live detection on channel page
Call bitwave live API immediately on page load.
Reduce poll to 15 second interval
Fix incorrect data parsing
2021-03-22 15:30:23 -07:00
DispatchCommit
76ac4c19b9 Hookup new live detection API 2021-03-22 15:30:22 -07:00
Sean Yesmunt
ca569dc4a7 wire up bitwave api 2021-03-22 15:30:21 -07:00
Sean Yesmunt
5aaa038d3f random fixes for livestreaming 2021-03-22 15:30:19 -07:00
Sean Yesmunt
6d07d1b672 reset livestream claims when active channel changes 2021-03-22 15:30:18 -07:00
Sean Yesmunt
204f24354f hide date for livestream claims 2021-03-22 15:30:17 -07:00
Sean Yesmunt
0f24f3fdfd use has_no_source to check if claim is a livestream 2021-03-22 15:30:16 -07:00
Sean Yesmunt
e5fc28821a add ENABLE_NO_SOURCE_CLAIMS to config
this sets has_source:true if the variable is true to non-odysee apps won't be shown livestream claims
2021-03-22 15:30:15 -07:00
Sean Yesmunt
dcd0528fda disconnect from comment websocket when leaving livestream page 2021-03-22 15:30:14 -07:00
Sean Yesmunt
3644eed49b fix first livestream comment not being displayed 2021-03-22 15:30:13 -07:00
Sean Yesmunt
fe3eb1e4c6 fix typo 2021-03-22 15:30:12 -07:00
Sean Yesmunt
3aead19b47 style cleanup 2021-03-22 15:30:11 -07:00
DispatchCommit
874188a973 Allow for specifying a type query to pre-select upload type
e.g. https://odysee.com/$/upload?type=livestream
2021-03-22 15:30:10 -07:00
Sean Yesmunt
372c6d0d9f rename livestream + livestreamsetup pages 2021-03-22 15:30:09 -07:00
DispatchCommit
17d0d9f1e0 default livestream calims state to empty array 2021-03-22 15:30:08 -07:00
DispatchCommit
99ec447bee show list of live stream claims 2021-03-22 15:30:07 -07:00
DispatchCommit
92e320e384 Fix livestream Title Section 2021-03-22 15:30:06 -07:00