Skip to content
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

Added Agora Video Calling, Cloud Recording and Replaying. #25

Merged
merged 25 commits into from
Nov 24, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
fb1d475
refactor: add topbar UI
crimx Nov 5, 2020
355dd7a
refactor: add topbar recording ui
crimx Nov 6, 2020
d32e333
refactor: add recording ui
crimx Nov 6, 2020
c931028
refactor(cloudrecording): add acquire and start
crimx Nov 9, 2020
b3ba9cb
Merge branch 'top-bar' of https://github.com/crimx/Flat-native into t…
crimx Nov 10, 2020
0c3c9cc
refactor(cloudrecording): add CloudingRecording
crimx Nov 10, 2020
00793a1
refactor(whiteboard): add realtime side panel
crimx Nov 11, 2020
b7abb7c
refactor(topbar): add call button
crimx Nov 11, 2020
42d298c
refactor(topbar): abstract tobpar component
crimx Nov 12, 2020
ddcba5b
refactor(cloudrecording): implement calling recording
crimx Nov 12, 2020
ecc7276
Merge remote-tracking branch 'upstream/master' into top-bar
crimx Nov 13, 2020
23405b2
refactor(agora): add recording counting
crimx Nov 13, 2020
9a4ec08
refactor(cloudrecording): configure cloud recording resolution
crimx Nov 16, 2020
ecb2637
refactor: add RealtimePanel component
crimx Nov 17, 2020
0c41387
chore: disable eslint rule jsx-a11y/media-has-caption
crimx Nov 17, 2020
239a86f
fix: add recording start time
crimx Nov 18, 2020
87a1966
refactor: add SmartPlayer
crimx Nov 18, 2020
23d7faf
refactor(storage): add uuid to each recording
crimx Nov 18, 2020
02c236d
refactor: add ReplayPage
crimx Nov 19, 2020
e231ab7
refactor: update exit button
crimx Nov 19, 2020
4812027
refactor(replay-page): update z-index
crimx Nov 19, 2020
8b68669
refactor: enforce type-safe equality operators
crimx Nov 21, 2020
a5a99e5
refactor: fix settimeout and setinterval typings
crimx Nov 21, 2020
fb55d26
chore: add comments on query interval
crimx Nov 21, 2020
fb9bd1f
refactor: upgrade combine-player
crimx Nov 23, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
9 changes: 9 additions & 0 deletions config/.env
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@ NETLESS_SDK_TOKEN=
NETLESS_APP_IDENTIFIER=

AGORA_APP_ID=
AGORA_RESTFUL_ID=
AGORA_RESTFUL_SECRET=

AGORA_OSS_ACCESS_KEY_ID=
AGORA_OSS_ACCESS_KEY_SECRET=
AGORA_OSS_REGION=
AGORA_OSS_BUCKET=
AGORA_OSS_FOLDER=
AGORA_OSS_PREFIX=

OSS_ACCESS_KEY_ID=
OSS_ACCESS_KEY_SECRET=
Expand Down
3 changes: 2 additions & 1 deletion src/renderer-app/.eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ module.exports = {
"array-callback-return": "warn",
"default-case": ["warn", { commentPattern: "^no default$" }],
"dot-location": ["warn", "property"],
eqeqeq: ["warn", "smart"],
eqeqeq: ["error", "always"],
"new-parens": "warn",
"no-array-constructor": "warn",
"no-caller": "warn",
Expand Down Expand Up @@ -196,6 +196,7 @@ module.exports = {
"jsx-a11y/role-has-required-aria-props": "warn",
"jsx-a11y/role-supports-aria-props": "warn",
"jsx-a11y/scope": "warn",
"jsx-a11y/media-has-caption": "off",

// https://github.com/facebook/react/tree/master/packages/eslint-plugin-react-hooks
"react-hooks/rules-of-hooks": "error",
Expand Down
4 changes: 4 additions & 0 deletions src/renderer-app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"homepage": ".",
"dependencies": {
"@ant-design/icons": "^4.2.2",
"@netless/combine-player": "^1.1.0",
"@netless/cursor-tool": "^0.0.4",
"@netless/docs-center": "^0.0.2",
"@netless/fetch-middleware": "^1.0.6",
Expand All @@ -20,8 +21,10 @@
"@netless/zoom-controller": "^0.0.3",
"@videojs/vhs-utils": "2.2.1",
"antd": "^4.6.1",
"classnames": "^2.2.6",
"extract-zip": "^2.0.1",
"fs-extra": "^9.0.1",
"memoize-one": "^5.1.1",
"node-downloader-helper": "^1.0.13",
"polly-js": "^1.6.7",
"react": "^16.13.1",
Expand All @@ -40,6 +43,7 @@
"@babel/preset-react": "^7.10.4",
"@babel/preset-typescript": "^7.10.4",
"@pmmmwh/react-refresh-webpack-plugin": "^0.4.1",
"@types/classnames": "^2.2.11",
"@types/fs-extra": "^9.0.1",
"@types/node": "^14.14.6",
"@types/node-downloader-helper": "^1.0.2",
Expand Down
6 changes: 6 additions & 0 deletions src/renderer-app/src/HistoryPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@ export type LocalStorageRoomDataType = {
userId: string;
roomName?: string;
cover?: string;
recordings?: Array<{
uuid: string;
startTime: number;
endTime: number;
videoUrl?: string;
}>;
};

export default class JoinPage extends React.Component<RouteComponentProps<{}>, JoinPageStates> {
Expand Down
98 changes: 49 additions & 49 deletions src/renderer-app/src/ReplayPage.less
Original file line number Diff line number Diff line change
@@ -1,67 +1,67 @@
.player-box {
width: 100%;
height: 100%;
}
//
.player-out-box {
.replay-container {
width: 100%;
height: 100vh;
display: flex;
flex-direction: row;
}
//
.player-big-icon {
width: 80px;
height: 80px;
border-radius: 50%;
position: absolute;
z-index: 1000;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
background-color: white;
box-shadow: 0 8px 24px 0 rgba(0, 0, 0, 0.08);
}
//
.player-mask {
width: 100%;

.replay-whiteboard-wrap {
position: relative;
flex: 1;
height: 100%;
position: absolute;
z-index: 99;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
}
//
.player-board {

.replay-whiteboard {
width: 100%;
height: 100%;
position: relative;
.operation {
width: 100px;
text-align: center;
}
.phase {
width: 100px;
text-align: right;
}
background: #f3f6f9;
}
//
.player-board-inner {

.replay-overlay {
position: absolute;
z-index: 100;
top: 0;
left: 0;
width: 100%;
height: 100%;
position: relative;
}

.white-board-loading {
width: 100%;
height: 100%;
.replay-play-overlay:extend(.replay-overlay) {
display: flex;
justify-content: center;
align-items: center;
}

.replay-play-icon {
width: 80px;
height: 80px;
display: flex;
align-items: center;
justify-content: center;
border: none;
outline: none;
border-radius: 50%;
background-color: #fff;
box-shadow: 0 8px 24px 0 rgba(0, 0, 0, 0.08);
cursor: pointer;
transition: backgroud-color 0.4s;

&:hover,
&:focus,
&:active {
box-shadow: 0 8px 24px 0 rgba(0, 0, 0, 0.2);
}
}

.replay-exit {
position: absolute;
z-index: 1002;
background-color: white;
z-index: 200;
top: 21px;
left: 18px;
border-radius: 50%;
overflow: hidden;
box-shadow: 0px 8px 24px 0px rgba(0, 0, 0, 0.08);

.topbar-content-right-cell {
margin: 0;
}
}