diff --git a/.DS_Store b/.DS_Store
old mode 100644
new mode 100755
diff --git a/.gitignore b/.gitignore
old mode 100644
new mode 100755
diff --git a/docker-compose.yml b/docker-compose.yml
old mode 100644
new mode 100755
index 5ac4497e..754a2db4
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -10,6 +10,6 @@ services:
build: packages/server
restart: unless-stopped
ports:
- - "3000:3000"
+ - "3010:3000"
env_file:
- - .env
\ No newline at end of file
+ - .env
diff --git a/example.env b/example.env
old mode 100644
new mode 100755
diff --git a/package.json b/package.json
old mode 100644
new mode 100755
diff --git a/packages/.DS_Store b/packages/.DS_Store
old mode 100644
new mode 100755
diff --git a/packages/LICENSE b/packages/LICENSE
old mode 100644
new mode 100755
diff --git a/packages/app/.config.js b/packages/app/.config.js
old mode 100644
new mode 100755
diff --git a/packages/app/.dockerignore b/packages/app/.dockerignore
old mode 100644
new mode 100755
diff --git a/packages/app/.gitignore b/packages/app/.gitignore
old mode 100644
new mode 100755
diff --git a/packages/app/Dockerfile b/packages/app/Dockerfile
old mode 100644
new mode 100755
diff --git a/packages/app/capacitor.config.json b/packages/app/capacitor.config.json
old mode 100644
new mode 100755
diff --git a/packages/app/config/index.js b/packages/app/config/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/constants/defaultRemotesOrigins.json b/packages/app/constants/defaultRemotesOrigins.json
old mode 100644
new mode 100755
diff --git a/packages/app/constants/defaultSettings.json b/packages/app/constants/defaultSettings.json
old mode 100644
new mode 100755
diff --git a/packages/app/constants/defaultSoundPack.json b/packages/app/constants/defaultSoundPack.json
old mode 100644
new mode 100755
diff --git a/packages/app/constants/defaultTheme.json b/packages/app/constants/defaultTheme.json
old mode 100644
new mode 100755
diff --git a/packages/app/constants/menu-contexts.js b/packages/app/constants/menu-contexts.js
old mode 100644
new mode 100755
diff --git a/packages/app/constants/publicRoutes.json b/packages/app/constants/publicRoutes.json
old mode 100644
new mode 100755
diff --git a/packages/app/constants/routes.json b/packages/app/constants/routes.json
old mode 100644
new mode 100755
diff --git a/packages/app/constants/settings/account/index.jsx b/packages/app/constants/settings/account/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/constants/settings/app/index.jsx b/packages/app/constants/settings/app/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/constants/settings/apparence/components/index.js b/packages/app/constants/settings/apparence/components/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/constants/settings/apparence/components/unsplashBrowser/index.jsx b/packages/app/constants/settings/apparence/components/unsplashBrowser/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/constants/settings/apparence/index.jsx b/packages/app/constants/settings/apparence/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/constants/settings/apparence/index.less b/packages/app/constants/settings/apparence/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/constants/settings/extensions/index.jsx b/packages/app/constants/settings/extensions/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/constants/settings/index.js b/packages/app/constants/settings/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/constants/settings/notifications/index.jsx b/packages/app/constants/settings/notifications/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/constants/settings/security/components/changePassword/index.jsx b/packages/app/constants/settings/security/components/changePassword/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/constants/settings/security/components/sessions/index.jsx b/packages/app/constants/settings/security/components/sessions/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/constants/settings/security/index.jsx b/packages/app/constants/settings/security/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/constants/settingsGroupsDecorator.json b/packages/app/constants/settingsGroupsDecorator.json
old mode 100644
new mode 100755
diff --git a/packages/app/electron-builder.yml b/packages/app/electron-builder.yml
old mode 100644
new mode 100755
diff --git a/packages/app/electron/main/configs/config.js b/packages/app/electron/main/configs/config.js
old mode 100644
new mode 100755
diff --git a/packages/app/electron/main/icon.png b/packages/app/electron/main/icon.png
old mode 100644
new mode 100755
diff --git a/packages/app/electron/main/index.js b/packages/app/electron/main/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/electron/main/statics/loading.css b/packages/app/electron/main/statics/loading.css
old mode 100644
new mode 100755
diff --git a/packages/app/electron/main/statics/loading.html b/packages/app/electron/main/statics/loading.html
old mode 100644
new mode 100755
diff --git a/packages/app/electron/main/statics/loading_dev.html b/packages/app/electron/main/statics/loading_dev.html
old mode 100644
new mode 100755
diff --git a/packages/app/electron/preload/index.js b/packages/app/electron/preload/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/index.html b/packages/app/index.html
old mode 100644
new mode 100755
diff --git a/packages/app/package.json b/packages/app/package.json
old mode 100644
new mode 100755
diff --git a/packages/app/public/assets/new_file.png b/packages/app/public/assets/new_file.png
old mode 100644
new mode 100755
diff --git a/packages/app/public/assets/no_song.png b/packages/app/public/assets/no_song.png
old mode 100644
new mode 100755
diff --git a/packages/app/public/broken-image.svg b/packages/app/public/broken-image.svg
old mode 100644
new mode 100755
diff --git a/packages/app/public/favicon.ico b/packages/app/public/favicon.ico
old mode 100644
new mode 100755
diff --git a/packages/app/public/logo_alt.svg b/packages/app/public/logo_alt.svg
old mode 100644
new mode 100755
diff --git a/packages/app/public/logo_full.svg b/packages/app/public/logo_full.svg
old mode 100644
new mode 100755
diff --git a/packages/app/public/sounds/crash.wav b/packages/app/public/sounds/crash.wav
old mode 100644
new mode 100755
diff --git a/packages/app/public/sounds/error.wav b/packages/app/public/sounds/error.wav
old mode 100644
new mode 100755
diff --git a/packages/app/public/sounds/notification.wav b/packages/app/public/sounds/notification.wav
old mode 100644
new mode 100755
diff --git a/packages/app/server.js b/packages/app/server.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/App.jsx b/packages/app/src/App.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/AboutApp/index.jsx b/packages/app/src/components/AboutApp/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/AboutApp/index.less b/packages/app/src/components/AboutApp/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/ActionsBar/index.jsx b/packages/app/src/components/ActionsBar/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/ActionsBar/index.less b/packages/app/src/components/ActionsBar/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/AdminTools/UserDataManager/index.jsx b/packages/app/src/components/AdminTools/UserDataManager/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/AdminTools/UserDataManager/index.less b/packages/app/src/components/AdminTools/UserDataManager/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/AdminTools/UserRolesManager/index.jsx b/packages/app/src/components/AdminTools/UserRolesManager/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/AdminTools/UserRolesManager/index.less b/packages/app/src/components/AdminTools/UserRolesManager/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/AdminTools/index.js b/packages/app/src/components/AdminTools/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/AppSearcher/index.jsx b/packages/app/src/components/AppSearcher/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/AppSearcher/index.less b/packages/app/src/components/AppSearcher/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Clock/index.jsx b/packages/app/src/components/Clock/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Clock/index.less b/packages/app/src/components/Clock/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/CommentCreator/index.jsx b/packages/app/src/components/CommentCreator/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/CommentCreator/index.less b/packages/app/src/components/CommentCreator/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/CommentsCard/index.jsx b/packages/app/src/components/CommentsCard/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/CommentsCard/index.less b/packages/app/src/components/CommentsCard/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Crash/index.jsx b/packages/app/src/components/Crash/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Crash/index.less b/packages/app/src/components/Crash/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Creator/creators/playlist/index.jsx b/packages/app/src/components/Creator/creators/playlist/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Creator/creators/playlist/index.less b/packages/app/src/components/Creator/creators/playlist/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Creator/creators/post/index.jsx b/packages/app/src/components/Creator/creators/post/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Creator/creators/video/index.jsx b/packages/app/src/components/Creator/creators/video/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Creator/index.jsx b/packages/app/src/components/Creator/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Creator/index.less b/packages/app/src/components/Creator/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/DraggableDrawer/helpers.js b/packages/app/src/components/DraggableDrawer/helpers.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/DraggableDrawer/index.jsx b/packages/app/src/components/DraggableDrawer/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/EmbbededMediaPlayer/index.jsx b/packages/app/src/components/EmbbededMediaPlayer/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/EmbbededMediaPlayer/index.less b/packages/app/src/components/EmbbededMediaPlayer/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/FollowButton/index.jsx b/packages/app/src/components/FollowButton/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/FollowButton/index.less b/packages/app/src/components/FollowButton/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/FollowersList/index.jsx b/packages/app/src/components/FollowersList/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/FollowersList/index.less b/packages/app/src/components/FollowersList/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Footer/index.jsx b/packages/app/src/components/Footer/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Footer/index.less b/packages/app/src/components/Footer/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/FormGenerator/index.jsx b/packages/app/src/components/FormGenerator/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/FormGenerator/index.less b/packages/app/src/components/FormGenerator/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/HashtagTrendings/index.jsx b/packages/app/src/components/HashtagTrendings/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/HashtagTrendings/index.less b/packages/app/src/components/HashtagTrendings/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Icons/index.jsx b/packages/app/src/components/Icons/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Image/index.jsx b/packages/app/src/components/Image/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/ImageUploader/index.jsx b/packages/app/src/components/ImageUploader/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/ImageViewer/index.jsx b/packages/app/src/components/ImageViewer/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/ImageViewer/index.less b/packages/app/src/components/ImageViewer/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Layout/bottomBar/index.jsx b/packages/app/src/components/Layout/bottomBar/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Layout/bottomBar/index.less b/packages/app/src/components/Layout/bottomBar/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Layout/drawer/index.jsx b/packages/app/src/components/Layout/drawer/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Layout/drawer/index.less b/packages/app/src/components/Layout/drawer/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Layout/header/index.jsx b/packages/app/src/components/Layout/header/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Layout/header/index.less b/packages/app/src/components/Layout/header/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Layout/index.js b/packages/app/src/components/Layout/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Layout/modal/index.jsx b/packages/app/src/components/Layout/modal/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Layout/modal/index.less b/packages/app/src/components/Layout/modal/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Layout/sidebar/components/editor/index.jsx b/packages/app/src/components/Layout/sidebar/components/editor/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Layout/sidebar/components/editor/index.less b/packages/app/src/components/Layout/sidebar/components/editor/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Layout/sidebar/components/index.js b/packages/app/src/components/Layout/sidebar/components/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Layout/sidebar/components/selector/index.jsx b/packages/app/src/components/Layout/sidebar/components/selector/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Layout/sidebar/components/selector/index.less b/packages/app/src/components/Layout/sidebar/components/selector/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Layout/sidebar/index.jsx b/packages/app/src/components/Layout/sidebar/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Layout/sidebar/index.less b/packages/app/src/components/Layout/sidebar/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Layout/sidedrawer/index.jsx b/packages/app/src/components/Layout/sidedrawer/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Layout/sidedrawer/index.less b/packages/app/src/components/Layout/sidedrawer/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Layout/systemBar/index.jsx b/packages/app/src/components/Layout/systemBar/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Layout/systemBar/index.less b/packages/app/src/components/Layout/systemBar/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/LivestreamsBrowser/index.jsx b/packages/app/src/components/LivestreamsBrowser/index.jsx
old mode 100644
new mode 100755
index 706c1859..1f6cb9e3
--- a/packages/app/src/components/LivestreamsBrowser/index.jsx
+++ b/packages/app/src/components/LivestreamsBrowser/index.jsx
@@ -1,11 +1,93 @@
import React from "react"
import * as antd from "antd"
+import { UserPreview } from "components"
+import { Icons } from "components/Icons"
+
+import Livestream from "../../models/livestream"
+
import "./index.less"
-// TODO: Implement this component
-export default (props) => {
- return
-
+const LivestreamItem = (props) => {
+ const { livestream } = props
+
+ const handleOnClick = async () => {
+ if (typeof props.onClick !== "function") {
+ console.warn("LivestreamItem: onClick is not a function")
+ return
+ }
+
+ return await props.onClick(livestream)
+ }
+
+ return
+
+

+
+
+
+
+
+ {livestream.description ?? "No description"}
+
+
+
+}
+
+export default (props) => {
+ const [list, setList] = React.useState([])
+
+ const loadStreamings = async () => {
+ const livestreams = await Livestream.getLivestreams().catch((err) => {
+ console.error(err)
+ app.message.error("Failed to load livestreams")
+ return false
+ })
+
+ console.log("Livestreams", livestreams)
+
+ if (livestreams) {
+ if (!Array.isArray(livestreams)) {
+ console.error("Livestreams is not an array")
+ return false
+ }
+
+ setList(livestreams)
+ }
+ }
+
+ const onClickItem = async (livestream) => {
+ app.setLocation(`/live/${livestream.username}`)
+ }
+
+ const renderList = () => {
+ if (list.length === 0) {
+ return
+
+ No livestreams found
+
+
+ }
+
+ return list.map((livestream) => {
+ return
+ })
+ }
+
+ React.useEffect(() => {
+ loadStreamings()
+ }, [])
+
+ return
+
+
+
+ Livestreams
+
+
+
+
+ {renderList()}
+
}
diff --git a/packages/app/src/components/LivestreamsBrowser/index.less b/packages/app/src/components/LivestreamsBrowser/index.less
old mode 100644
new mode 100755
index e69de29b..ce21b392
--- a/packages/app/src/components/LivestreamsBrowser/index.less
+++ b/packages/app/src/components/LivestreamsBrowser/index.less
@@ -0,0 +1,72 @@
+@item_border_radius: 10px;
+
+.livestreamsBrowser {
+ display: flex;
+ flex-direction: column;
+
+ width: 100%;
+
+ .header {
+ svg {
+ font-size: 2.5rem;
+ }
+
+ font-size: 2rem;
+ }
+
+ .livestream_list {
+ display: flex;
+ flex-direction: column;
+ padding: 0 50px;
+
+ .livestream_item {
+ display: flex;
+ flex-direction: row;
+
+ background-color: var(--background-color-primary2);
+
+ border: 1px solid var(--border-color);
+
+ padding: 10px;
+ margin-bottom: 20px;
+
+ border-radius: @item_border_radius;
+
+ cursor: pointer;
+ transition: all 0.2s ease-in-out;
+
+ &:hover {
+ background-color: var(--background-color-accent);
+ }
+
+ .livestream_thumbnail {
+ width: 8vw;
+ height: 100%;
+
+ img {
+ width: 100%;
+ height: 100%;
+ border-radius: @item_border_radius;
+ }
+ }
+
+ .livestream_info {
+ margin-left: 20px;
+ font-size: 1rem;
+ color: var(--text-color);
+
+ padding: 10px 0;
+
+ .userPreview {
+ font-size: 1.5rem;
+ }
+
+ .livestream_description {
+ margin-top: 20px;
+ font-size: 1.5rem;
+ color: var(--text-color);
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/components/LoadMore/index.jsx b/packages/app/src/components/LoadMore/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/LoadMore/index.less b/packages/app/src/components/LoadMore/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Login/index.jsx b/packages/app/src/components/Login/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Login/index.less b/packages/app/src/components/Login/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/ModifierTag/index.jsx b/packages/app/src/components/ModifierTag/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Navigation/index.jsx b/packages/app/src/components/Navigation/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Navigation/index.less b/packages/app/src/components/Navigation/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/NotFound/index.jsx b/packages/app/src/components/NotFound/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Notifications/index.jsx b/packages/app/src/components/Notifications/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/ObjectInspector/index.jsx b/packages/app/src/components/ObjectInspector/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/PostCard/components/actions/index.jsx b/packages/app/src/components/PostCard/components/actions/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/PostCard/components/actions/index.less b/packages/app/src/components/PostCard/components/actions/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/PostCard/components/actions/likeButton/index.jsx b/packages/app/src/components/PostCard/components/actions/likeButton/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/PostCard/components/actions/likeButton/index.less b/packages/app/src/components/PostCard/components/actions/likeButton/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/PostCard/components/actions/saveButton/index.jsx b/packages/app/src/components/PostCard/components/actions/saveButton/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/PostCard/components/actions/saveButton/index.less b/packages/app/src/components/PostCard/components/actions/saveButton/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/PostCard/components/attachments/index.jsx b/packages/app/src/components/PostCard/components/attachments/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/PostCard/components/attachments/index.less b/packages/app/src/components/PostCard/components/attachments/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/PostCard/components/content/index.jsx b/packages/app/src/components/PostCard/components/content/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/PostCard/components/content/index.less b/packages/app/src/components/PostCard/components/content/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/PostCard/components/contentFailed/index.jsx b/packages/app/src/components/PostCard/components/contentFailed/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/PostCard/components/header/index.jsx b/packages/app/src/components/PostCard/components/header/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/PostCard/components/header/index.less b/packages/app/src/components/PostCard/components/header/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/PostCard/index.jsx b/packages/app/src/components/PostCard/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/PostCard/index.less b/packages/app/src/components/PostCard/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/PostCreator/index.jsx b/packages/app/src/components/PostCreator/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/PostCreator/index.less b/packages/app/src/components/PostCreator/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/PostsFeed/index.jsx b/packages/app/src/components/PostsFeed/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/PostsFeed/index.less b/packages/app/src/components/PostsFeed/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/RenderError/index.jsx b/packages/app/src/components/RenderError/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/RenderError/index.less b/packages/app/src/components/RenderError/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/RenderWindow/index.jsx b/packages/app/src/components/RenderWindow/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/RenderWindow/index.less b/packages/app/src/components/RenderWindow/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/ScheduledProgress/index.jsx b/packages/app/src/components/ScheduledProgress/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/ScheduledProgress/index.less b/packages/app/src/components/ScheduledProgress/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/SearchButton/index.jsx b/packages/app/src/components/SearchButton/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/SearchButton/index.less b/packages/app/src/components/SearchButton/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Searcher/index.jsx b/packages/app/src/components/Searcher/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Searcher/index.less b/packages/app/src/components/Searcher/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/SelectableList/index.jsx b/packages/app/src/components/SelectableList/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/SelectableList/index.less b/packages/app/src/components/SelectableList/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Settings/index.jsx b/packages/app/src/components/Settings/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Settings/index.less b/packages/app/src/components/Settings/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Skeleton/index.jsx b/packages/app/src/components/Skeleton/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/Skeleton/index.less b/packages/app/src/components/Skeleton/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/StepsForm/index.jsx b/packages/app/src/components/StepsForm/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/StepsForm/index.less b/packages/app/src/components/StepsForm/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/UserPreview/index.jsx b/packages/app/src/components/UserPreview/index.jsx
old mode 100644
new mode 100755
index 562bf19b..f0625502
--- a/packages/app/src/components/UserPreview/index.jsx
+++ b/packages/app/src/components/UserPreview/index.jsx
@@ -1,13 +1,29 @@
import React from "react"
+import { Skeleton } from "antd"
import classnames from "classnames"
+import User from "models/user"
+
import { Image } from "components"
import { Icons } from "components/Icons"
import "./index.less"
export default (props) => {
- const { user } = props
+ let [userData, setUserData] = React.useState(props.user)
+
+ const fetchUser = async () => {
+ if (!props.username) {
+ console.error("Username is not defined")
+ return false
+ }
+
+ const data = await User.data(props.username)
+
+ if (data) {
+ setUserData(data)
+ }
+ }
const handleOnClick = async () => {
if (typeof props.onClick !== "function") {
@@ -15,7 +31,19 @@ export default (props) => {
return
}
- return await props.onClick(user)
+ return await props.onClick(userData)
+ }
+
+ React.useEffect(() => {
+ if (typeof userData === "undefined") {
+ fetchUser()
+ }
+ }, [])
+
+ if (!userData) {
+ return
+
+
}
return
{
- {user.fullName ?? `@${user.username}`}
- {user.verified && }
+ {userData.fullName ?? `@${userData.username}`}
+ {userData.verified && }
diff --git a/packages/app/src/components/UserPreview/index.less b/packages/app/src/components/UserPreview/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/UserRegister/index.jsx b/packages/app/src/components/UserRegister/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/UserRegister/index.less b/packages/app/src/components/UserRegister/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/UserSelector/index.jsx b/packages/app/src/components/UserSelector/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/UserSelector/index.less b/packages/app/src/components/UserSelector/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/components/index.js b/packages/app/src/components/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/cores/api/index.js b/packages/app/src/cores/api/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/cores/audioPlayer/index.jsx b/packages/app/src/cores/audioPlayer/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/cores/contextMenu/components/contextMenu/index.jsx b/packages/app/src/cores/contextMenu/components/contextMenu/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/cores/contextMenu/components/contextMenu/index.less b/packages/app/src/cores/contextMenu/components/contextMenu/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/cores/contextMenu/index.js b/packages/app/src/cores/contextMenu/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/cores/i18n/index.js b/packages/app/src/cores/i18n/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/cores/i18n/translations/en.json b/packages/app/src/cores/i18n/translations/en.json
old mode 100644
new mode 100755
diff --git a/packages/app/src/cores/i18n/translations/es.json b/packages/app/src/cores/i18n/translations/es.json
old mode 100644
new mode 100755
diff --git a/packages/app/src/cores/index.js b/packages/app/src/cores/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/cores/notifications/index.jsx b/packages/app/src/cores/notifications/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/cores/permissions/index.js b/packages/app/src/cores/permissions/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/cores/search/index.js b/packages/app/src/cores/search/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/cores/settings/index.js b/packages/app/src/cores/settings/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/cores/shortcuts/index.js b/packages/app/src/cores/shortcuts/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/cores/sound/index.js b/packages/app/src/cores/sound/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/cores/style/index.jsx b/packages/app/src/cores/style/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/debug/components/index.js b/packages/app/src/debug/components/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/debug/components/theme/index.jsx b/packages/app/src/debug/components/theme/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/debug/components/theme/index.less b/packages/app/src/debug/components/theme/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/debug/components/timeCalculation/index.jsx b/packages/app/src/debug/components/timeCalculation/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/debug/components/timeCalculation/index.less b/packages/app/src/debug/components/timeCalculation/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/debug/index.jsx b/packages/app/src/debug/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/debug/index.less b/packages/app/src/debug/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/layout.jsx b/packages/app/src/layout.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/layouts/default/index.jsx b/packages/app/src/layouts/default/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/layouts/index.js b/packages/app/src/layouts/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/layouts/login/index.jsx b/packages/app/src/layouts/login/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/layouts/mobile/index.jsx b/packages/app/src/layouts/mobile/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/models/index.js b/packages/app/src/models/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/models/livestream/index.js b/packages/app/src/models/livestream/index.js
new file mode 100644
index 00000000..ce09fd1d
--- /dev/null
+++ b/packages/app/src/models/livestream/index.js
@@ -0,0 +1,26 @@
+export default class Livestream {
+ static get bridge() {
+ return window.app?.api.withEndpoints("main")
+ }
+
+ static async getLivestream({ username }) {
+ if (!username) {
+ throw new Error("Username is required")
+ }
+
+ let request = await app.api.customRequest("main", {
+ method: "GET",
+ url: `/streaming/${username}`,
+ })
+
+ request = request.data
+
+ return request
+ }
+
+ static async getLivestreams() {
+ const request = await Livestream.bridge.get.streams()
+
+ return request
+ }
+}
\ No newline at end of file
diff --git a/packages/app/src/models/post/index.js b/packages/app/src/models/post/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/models/session/index.js b/packages/app/src/models/session/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/models/user/index.js b/packages/app/src/models/user/index.js
old mode 100644
new mode 100755
index 40232264..b92ab353
--- a/packages/app/src/models/user/index.js
+++ b/packages/app/src/models/user/index.js
@@ -5,14 +5,18 @@ export default class User {
return window.app?.api.withEndpoints("main")
}
- static async data() {
- const token = await Session.decodedToken()
+ static async data(username) {
+ if (!username) {
+ const token = await Session.decodedToken()
- if (!token || !User.bridge) {
- return false
+ if (!token || !User.bridge) {
+ return false
+ }
+
+ username = token.username
}
- return User.bridge.get.user(undefined, { username: token.username, _id: token.user_id })
+ return User.bridge.get.user(undefined, { username })
}
static async publicData() {
diff --git a/packages/app/src/pages/@[username]/index.jsx b/packages/app/src/pages/@[username]/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/about/index.jsx b/packages/app/src/pages/about/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/about/index.less b/packages/app/src/pages/about/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/account/[username].jsx b/packages/app/src/pages/account/[username].jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/account/index.jsx b/packages/app/src/pages/account/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/account/index.less b/packages/app/src/pages/account/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/account/tabs/details.jsx b/packages/app/src/pages/account/tabs/details.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/account/tabs/followers.jsx b/packages/app/src/pages/account/tabs/followers.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/account/tabs/posts.jsx b/packages/app/src/pages/account/tabs/posts.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/changelogs/index.jsx b/packages/app/src/pages/changelogs/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/group/[group_id].jsx b/packages/app/src/pages/group/[group_id].jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/group/create/index.jsx b/packages/app/src/pages/group/create/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/group/create/index.less b/packages/app/src/pages/group/create/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/group/index.less b/packages/app/src/pages/group/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/groups/index.jsx b/packages/app/src/pages/groups/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/groups/index.less b/packages/app/src/pages/groups/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/home/index.jsx b/packages/app/src/pages/home/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/home/index.less b/packages/app/src/pages/home/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/index.jsx b/packages/app/src/pages/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/licenses/index.jsx b/packages/app/src/pages/licenses/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/licenses/index.less b/packages/app/src/pages/licenses/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/live/[key].jsx b/packages/app/src/pages/live/[key].jsx
old mode 100644
new mode 100755
index 8328c1b2..70849659
--- a/packages/app/src/pages/live/[key].jsx
+++ b/packages/app/src/pages/live/[key].jsx
@@ -1,6 +1,9 @@
import React from "react"
-import config from "config"
import * as antd from "antd"
+
+import Livestream from "../../models/livestream"
+
+import { UserPreview } from "components"
import { Icons } from "components/Icons"
import Plyr from "plyr"
@@ -20,7 +23,6 @@ export default class StreamViewer extends React.Component {
spectators: 0,
player: null,
- streamKey: null,
loadedDecoder: "hls",
decoderInstance: null,
plyrOptions: {},
@@ -85,33 +87,43 @@ export default class StreamViewer extends React.Component {
}
}
+ loadStreamInfo = async (username) => {
+ const streamInfo = await Livestream.getLivestream({ username })
+
+ if (!streamInfo) {
+ return false
+ }
+
+ this.setState({ streamInfo: streamInfo })
+ }
+
componentDidMount = async () => {
const requestedUsername = this.props.match.params.key
- const player = new Plyr("#player", {
- autoplay: true,
- controls: ["play", "mute", "volume", "fullscreen", "options", "settings"],
- ...this.state.plyrOptions,
- })
+ // get stream info
+ await this.loadStreamInfo(requestedUsername)
- await this.setState({
- player,
- streamKey: requestedUsername,
- })
+ console.log("Stream info", this.state.streamInfo)
- // TODO: Get sourceUri from server
- const sourceUri = `${config.remotes.streamingApi}/${this.state.streamKey}/index.m3u8`
+ if (this.state.streamInfo) {
+ if (!this.state.streamInfo.sources) {
+ return false
+ }
- await this.loadDecoder("hls", sourceUri)
+ this.enterPlayerAnimation()
- // enter player
- this.enterPlayerAnimation()
+ const player = new Plyr("#player", {
+ autoplay: true,
+ controls: ["play", "mute", "volume", "fullscreen", "options", "settings"],
+ ...this.state.plyrOptions,
+ })
- // fetch user info in the background
- this.gatherUserInfo()
+ await this.setState({
+ player,
+ })
- // fetch stream info in the background
- //await this.gatherStreamInfo()
+ await this.loadDecoder("hls", this.state.streamInfo.sources.hls)
+ }
}
componentWillUnmount = () => {
@@ -135,38 +147,6 @@ export default class StreamViewer extends React.Component {
app.SidebarController.toggleVisibility(true)
}
- gatherStreamInfo = async () => {
- const result = await app.api.withEndpoints("main").get.streamInfoFromUsername(undefined, {
- username: this.state.streamKey,
- }).catch((error) => {
- console.error(error)
- antd.message.error(error.message)
- return false
- })
-
- if (result) {
- this.setState({
- streamInfo: result,
- })
- }
- }
-
- gatherUserInfo = async () => {
- const result = await app.api.withEndpoints("main").get.user(undefined, {
- username: this.state.streamKey,
- }).catch((error) => {
- console.error(error)
- antd.message.error(error)
- return false
- })
-
- if (result) {
- this.setState({
- userData: result,
- })
- }
- }
-
updateQuality = (newQuality) => {
if (loadedProtocol === "hls") {
this.state.protocolInstance.levels.forEach((level, levelIndex) => {
@@ -212,37 +192,29 @@ export default class StreamViewer extends React.Component {
}
render() {
+ if (!this.state.streamInfo || this.state.isEnded) {
+ return
+
+
+ This stream is ended
+
+
+
+ }
+
return
- {
- this.state.isEnded &&
-
-
- This stream is ended
-
-
-
- }
+
-
-
-
-
{this.state.userData?.username}
-
-
+
+
{this.state.spectators}
- {/* TODO: Use chatbox component and join to stream channel using username */}
Cannot connect with chat server
diff --git a/packages/app/src/pages/live/index.less b/packages/app/src/pages/live/index.less
old mode 100644
new mode 100755
index 44a7209f..a4af18ec
--- a/packages/app/src/pages/live/index.less
+++ b/packages/app/src/pages/live/index.less
@@ -51,7 +51,6 @@
align-items: flex-start;
width: 100%;
- height: 10vh;
padding: 10px;
@@ -65,18 +64,8 @@
margin: 0;
}
- >div {
- display: flex;
- flex-direction: row;
- align-items: center;
- justify-content: center;
-
- height: fit-content;
- margin-bottom: 8px;
-
- >div {
- margin-right: 8px;
- }
+ .userPreview {
+ margin-bottom: 20px;
}
}
diff --git a/packages/app/src/pages/login/index.jsx b/packages/app/src/pages/login/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/login/index.less b/packages/app/src/pages/login/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/notifications/index.jsx b/packages/app/src/pages/notifications/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/notifications/index.less b/packages/app/src/pages/notifications/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/post/[post_id].jsx b/packages/app/src/pages/post/[post_id].jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/post/index.less b/packages/app/src/pages/post/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/streaming_control/index.jsx b/packages/app/src/pages/streaming_control/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/pages/streaming_control/index.less b/packages/app/src/pages/streaming_control/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/router.jsx b/packages/app/src/router.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/src/theme/animations.less b/packages/app/src/theme/animations.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/theme/fixments.less b/packages/app/src/theme/fixments.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/theme/fonts.css b/packages/app/src/theme/fonts.css
old mode 100644
new mode 100755
diff --git a/packages/app/src/theme/index.less b/packages/app/src/theme/index.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/theme/vars.less b/packages/app/src/theme/vars.less
old mode 100644
new mode 100755
diff --git a/packages/app/src/utils/cursorPosition/index.js b/packages/app/src/utils/cursorPosition/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/utils/download/index.js b/packages/app/src/utils/download/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/utils/findChildById/index.js b/packages/app/src/utils/findChildById/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/utils/getBase64/index.js b/packages/app/src/utils/getBase64/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/utils/haptics/index.js b/packages/app/src/utils/haptics/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/utils/index.js b/packages/app/src/utils/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/utils/processString/index.js b/packages/app/src/utils/processString/index.js
old mode 100644
new mode 100755
diff --git a/packages/app/src/utils/useLongPress/index.jsx b/packages/app/src/utils/useLongPress/index.jsx
old mode 100644
new mode 100755
diff --git a/packages/app/vite.config.js b/packages/app/vite.config.js
old mode 100644
new mode 100755
diff --git a/packages/server/.env-example b/packages/server/.env-example
old mode 100644
new mode 100755
diff --git a/packages/server/Dockerfile b/packages/server/Dockerfile
old mode 100644
new mode 100755
diff --git a/packages/server/README.md b/packages/server/README.md
old mode 100644
new mode 100755
diff --git a/packages/server/package.json b/packages/server/package.json
old mode 100644
new mode 100755
diff --git a/packages/server/src/api.js b/packages/server/src/api.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/classes/DbManager/index.js b/packages/server/src/classes/DbManager/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/classes/StorageClient/index.js b/packages/server/src/classes/StorageClient/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/controllers/BadgesController/index.js b/packages/server/src/controllers/BadgesController/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/controllers/CommentsController/index.js b/packages/server/src/controllers/CommentsController/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/controllers/CommentsController/methods/deleteComment.js b/packages/server/src/controllers/CommentsController/methods/deleteComment.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/controllers/CommentsController/methods/getComments.js b/packages/server/src/controllers/CommentsController/methods/getComments.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/controllers/CommentsController/methods/newComment.js b/packages/server/src/controllers/CommentsController/methods/newComment.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/controllers/ConfigController/index.js b/packages/server/src/controllers/ConfigController/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/controllers/FilesController/index.js b/packages/server/src/controllers/FilesController/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/controllers/PlaylistsController/index.js b/packages/server/src/controllers/PlaylistsController/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/controllers/PostsController/index.js b/packages/server/src/controllers/PostsController/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/controllers/PostsController/methods/createPost.js b/packages/server/src/controllers/PostsController/methods/createPost.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/controllers/PostsController/methods/deletePost.js b/packages/server/src/controllers/PostsController/methods/deletePost.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/controllers/PostsController/methods/getPostData.js b/packages/server/src/controllers/PostsController/methods/getPostData.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/controllers/PostsController/methods/index.js b/packages/server/src/controllers/PostsController/methods/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/controllers/PostsController/methods/modifyPostData.js b/packages/server/src/controllers/PostsController/methods/modifyPostData.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/controllers/PostsController/methods/toogleLike.js b/packages/server/src/controllers/PostsController/methods/toogleLike.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/controllers/PostsController/methods/tooglePostSave.js b/packages/server/src/controllers/PostsController/methods/tooglePostSave.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/controllers/PublicController/index.js b/packages/server/src/controllers/PublicController/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/controllers/RolesController/index.js b/packages/server/src/controllers/RolesController/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/controllers/SearchController/index.js b/packages/server/src/controllers/SearchController/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/controllers/SessionController/index.js b/packages/server/src/controllers/SessionController/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/controllers/StreamingController/index.js b/packages/server/src/controllers/StreamingController/index.js
old mode 100644
new mode 100755
index 176e9118..0d869ff1
--- a/packages/server/src/controllers/StreamingController/index.js
+++ b/packages/server/src/controllers/StreamingController/index.js
@@ -1,17 +1,17 @@
import { Controller } from "linebridge/dist/server"
import { User, StreamingKey } from "../../models"
import { nanoid } from "nanoid"
-
+import lodash from "lodash"
import axios from "axios"
-const streamingMediaServer = process.env.streamingMediaServer ?? "media.ragestudio.net"
-const streamingServerAPIAddress = process.env.streamingServerAPIAddress ?? "media.ragestudio.net"
-const streamingServerAPIPort = process.env.streamingServerAPIPort ?? 3002
+const streamingServerAPIAddress = process.env.streamingServerAPIAddress ?? "live.ragestudio.net"
const streamingServerAPIProtocol = process.env.streamingServerAPIProtocol ?? "http"
-const streamingServerAPIUri = `${streamingServerAPIProtocol}://${streamingServerAPIAddress}:${streamingServerAPIPort}`
+const streamingServerAPIUri = `${streamingServerAPIProtocol}://${streamingServerAPIAddress}`
+
+const FILTER_KEYS = ["stream"]
export default class StreamingController extends Controller {
- static useMiddlewares = ["withAuthentication"]
+ streamings = []
methods = {
genereteKey: async (user_id) => {
@@ -30,66 +30,201 @@ export default class StreamingController extends Controller {
await streamingKey.save()
return streamingKey
+ },
+ regenerateStreamingList: async () => {
+ // fetch all streams from api
+ let streams = await axios.get(`${streamingServerAPIUri}/api/v1/streams`).catch((err) => {
+ console.log(err)
+ return false
+ })
+
+ if (streams) {
+ streams = streams.data.streams
+
+ // FIXME: this method is not totally async
+ streams.forEach((stream) => {
+ // check if the stream is already in the list
+ const streamInList = this.streamings.find((s) => s.stream === stream.name)
+
+ if (!streamInList) {
+ // if not, add it
+ this.methods.pushToLocalList({
+ stream: stream.name,
+ app: stream.app,
+ }).catch((err) => {
+ // sorry for you
+ })
+ }
+ })
+ }
+ },
+ pushToLocalList: async (payload) => {
+ const { stream, app } = payload
+
+ const username = app.split("/")[1]
+
+ const streamingKey = await StreamingKey.findOne({
+ key: stream
+ })
+
+ if (!streamingKey) {
+ throw new Error("Invalid streaming key")
+ }
+
+ if (username !== streamingKey.username) {
+ throw new Error("Invalid streaming key for this username")
+ }
+
+ const streaming = {
+ stream,
+ username: streamingKey.username,
+ sources: {
+ rtmp: `rtmp://${streamingServerAPIAddress}/live/${username}`,
+ hls: `http://${streamingServerAPIAddress}/live/${username}/src.m3u8`,
+ flv: `http://${streamingServerAPIAddress}/live/${username}/src.flv`,
+ }
+ }
+
+ this.streamings.push(streaming)
+
+ return streaming
+ },
+ removeFromLocalList: async (payload) => {
+ const { stream } = payload
+
+ // remove from streamings array
+ const streaming = this.streamings.find((streaming) => streaming.stream === stream)
+
+ if (!streaming) {
+ throw new Error("Stream not found")
+ }
+
+ this.streamings = this.streamings.filter((streaming) => streaming.stream !== stream)
+
+ return streaming
}
}
get = {
- "/stream_info_from_username": async (req, res) => {
- const { username } = req.query
-
- const userspace = await StreamingKey.findOne({ username })
-
- if (!userspace) {
- return res.status(403).json({
- error: "This username has not a streaming key"
- })
- }
-
- // TODO: meanwhile linebridge remote linkers are in development we gonna use this methods to fetch
- const { data } = await axios.get(`${streamingServerAPIUri}/streams`, {
- params: {
- username: userspace.username
- }
- }).catch((error) => {
- res.status(500).json({
- error: `Failed to fetch streams from [${streamingServerAPIAddress}]: ${error.message}`
- })
- return false
- })
-
- if (data) {
- return res.json(data)
- }
- },
"/streams": async (req, res) => {
- // TODO: meanwhile linebridge remote linkers are in development we gonna use this methods to fetch
- const { data } = await axios.get(`${streamingServerAPIUri}/streams`).catch((error) => {
- res.status(500).json({
- error: `Failed to fetch streams from [${streamingServerAPIAddress}]: ${error.message}`
+ await this.methods.regenerateStreamingList()
+
+ const data = this.streamings.map((stream) => {
+ return lodash.omit(stream, FILTER_KEYS)
+ })
+
+ return res.json(data)
+ },
+ "/streaming/:username": async (req, res) => {
+ const { username } = req.params
+
+ // search on this.streamings
+ const streaming = this.streamings.find((streaming) => streaming.username === username)
+
+ if (streaming) {
+ return res.json(streaming)
+ }
+
+ return res.status(404).json({
+ error: "Stream not found"
+ })
+ },
+ "/streaming_key": {
+ middlewares: ["withAuthentication"],
+ fn: async (req, res) => {
+ let streamingKey = await StreamingKey.findOne({
+ user_id: req.user._id.toString()
})
+
+ if (!streamingKey) {
+ const newKey = await this.methods.genereteKey(req.user._id.toString()).catch(err => {
+ res.status(500).json({
+ error: `Cannot generate a new key: ${err.message}`,
+ })
+
+ return false
+ })
+
+ if (!newKey) {
+ return false
+ }
+
+ return res.json(newKey)
+ } else {
+ return res.json(streamingKey)
+ }
+ }
+ },
+ }
+
+ post = {
+ "/streaming/publish": async (req, res) => {
+ const { app, stream, tcUrl } = req.body
+
+ const streaming = await this.methods.pushToLocalList({
+ app,
+ stream,
+ tcUrl
+ }).catch((err) => {
+ res.status(500).json({
+ code: 1,
+ error: err.message
+ })
+
return false
})
- if (data) {
- return res.json(data)
+ if (streaming) {
+ global.wsInterface.io.emit(`streaming.new`, {
+ username: streaming.username,
+ })
+
+ return res.json({
+ code: 0,
+ status: "ok"
+ })
}
},
- "/target_streaming_server": async (req, res) => {
- // TODO: resolve an available server
- // for now we just return the only one should be online
- return res.json({
- protocol: "rtmp",
- port: "1935",
- space: "live",
- address: streamingMediaServer,
- })
- },
- "/streaming_key": async (req, res) => {
- let streamingKey = await StreamingKey.findOne({
- user_id: req.user._id.toString()
+ "/streaming/unpublish": async (req, res) => {
+ const { stream } = req.body
+
+ const streaming = this.methods.removeFromLocalList({
+ stream
+ }).catch((err) => {
+ res.status(500).json({
+ code: 2,
+ status: err.message
+ })
+
+ return false
})
- if (!streamingKey) {
+ if (streaming) {
+ global.wsInterface.io.emit(`streaming.end`, {
+ username: streaming.username,
+ })
+
+ return res.json({
+ code: 0,
+ status: "ok"
+ })
+ }
+ },
+ "/regenerate_streaming_key": {
+ middlewares: ["withAuthentication"],
+ fn: async (req, res) => {
+ // check if the user already has a key
+ let streamingKey = await StreamingKey.findOne({
+ user_id: req.user._id.toString()
+ })
+
+ // if exists, delete it
+
+ if (streamingKey) {
+ await streamingKey.remove()
+ }
+
+ // generate a new key
const newKey = await this.methods.genereteKey(req.user._id.toString()).catch(err => {
res.status(500).json({
error: `Cannot generate a new key: ${err.message}`,
@@ -103,45 +238,7 @@ export default class StreamingController extends Controller {
}
return res.json(newKey)
- } else {
- return res.json(streamingKey)
}
- },
- "/streaming/:username": async (req, res) => {
-
- },
- "/streaming/auth": async (req, res) => {
-
- }
- }
-
- post = {
- "/regenerate_streaming_key": async (req, res) => {
- // check if the user already has a key
- let streamingKey = await StreamingKey.findOne({
- user_id: req.user._id.toString()
- })
-
- // if exists, delete it
-
- if (streamingKey) {
- await streamingKey.remove()
- }
-
- // generate a new key
- const newKey = await this.methods.genereteKey(req.user._id.toString()).catch(err => {
- res.status(500).json({
- error: `Cannot generate a new key: ${err.message}`,
- })
-
- return false
- })
-
- if (!newKey) {
- return false
- }
-
- return res.json(newKey)
}
}
}
\ No newline at end of file
diff --git a/packages/server/src/controllers/UserController/index.js b/packages/server/src/controllers/UserController/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/controllers/index.js b/packages/server/src/controllers/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/fixments/additions_to_attachments.js b/packages/server/src/fixments/additions_to_attachments.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/index.js b/packages/server/src/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/lib/additionsHandler/handlers/essc.js b/packages/server/src/lib/additionsHandler/handlers/essc.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/lib/additionsHandler/handlers/vaultItemFlatProperties.js b/packages/server/src/lib/additionsHandler/handlers/vaultItemFlatProperties.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/lib/additionsHandler/handlers/vaultItemParser.js b/packages/server/src/lib/additionsHandler/handlers/vaultItemParser.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/lib/additionsHandler/index.js b/packages/server/src/lib/additionsHandler/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/lib/checkUserAdmin/index.js b/packages/server/src/lib/checkUserAdmin/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/lib/createUser/index.js b/packages/server/src/lib/createUser/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/lib/essc/index.js b/packages/server/src/lib/essc/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/lib/index.js b/packages/server/src/lib/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/lib/schematized/index.js b/packages/server/src/lib/schematized/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/lib/token/index.js b/packages/server/src/lib/token/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/lib/videoTranscode/index.js b/packages/server/src/lib/videoTranscode/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/middlewares/errorHandler/index.js b/packages/server/src/middlewares/errorHandler/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/middlewares/hasPermissions/index.js b/packages/server/src/middlewares/hasPermissions/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/middlewares/index.js b/packages/server/src/middlewares/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/middlewares/onlyAdmin/index.js b/packages/server/src/middlewares/onlyAdmin/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/middlewares/permissions/index.js b/packages/server/src/middlewares/permissions/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/middlewares/roles/index.js b/packages/server/src/middlewares/roles/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/middlewares/withAuthentication/index.js b/packages/server/src/middlewares/withAuthentication/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/middlewares/withOptionalAuthentication/index.js b/packages/server/src/middlewares/withOptionalAuthentication/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/models/index.js b/packages/server/src/models/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/schemas/badge/index.js b/packages/server/src/schemas/badge/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/schemas/comment/index.js b/packages/server/src/schemas/comment/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/schemas/config/index.js b/packages/server/src/schemas/config/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/schemas/featuredWallpaper/index.js b/packages/server/src/schemas/featuredWallpaper/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/schemas/index.js b/packages/server/src/schemas/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/schemas/post/index.js b/packages/server/src/schemas/post/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/schemas/regenerationToken/index.js b/packages/server/src/schemas/regenerationToken/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/schemas/role/index.js b/packages/server/src/schemas/role/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/schemas/savedPost/index.js b/packages/server/src/schemas/savedPost/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/schemas/session/index.js b/packages/server/src/schemas/session/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/schemas/streamingKey/index.js b/packages/server/src/schemas/streamingKey/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/schemas/user/index.js b/packages/server/src/schemas/user/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/schemas/userFollow/index.js b/packages/server/src/schemas/userFollow/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/setup/dbAdmin/index.js b/packages/server/src/setup/dbAdmin/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/setup/index.js b/packages/server/src/setup/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/utils/aggregate-error/index.js b/packages/server/src/utils/aggregate-error/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/utils/clean-stack/index.js b/packages/server/src/utils/clean-stack/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/utils/escape-string-regexp/index.js b/packages/server/src/utils/escape-string-regexp/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/utils/indent-string/index.js b/packages/server/src/utils/indent-string/index.js
old mode 100644
new mode 100755
diff --git a/packages/server/src/utils/pMap/index.js b/packages/server/src/utils/pMap/index.js
old mode 100644
new mode 100755
diff --git a/packages/wrapper/Dockerfile b/packages/wrapper/Dockerfile
old mode 100644
new mode 100755
diff --git a/packages/wrapper/package.json b/packages/wrapper/package.json
old mode 100644
new mode 100755
diff --git a/packages/wrapper/src/index.js b/packages/wrapper/src/index.js
old mode 100644
new mode 100755
diff --git a/packages/wrapper/src/lib/setupDist.js b/packages/wrapper/src/lib/setupDist.js
old mode 100644
new mode 100755
diff --git a/scripts/release.js b/scripts/release.js
old mode 100644
new mode 100755