v1.6.2/api fix, admin dashboard deploy, scroller
This commit is contained in:
+12
@@ -1,5 +1,17 @@
|
|||||||
{
|
{
|
||||||
"projects": {
|
"projects": {
|
||||||
"default": "watch-party-crx"
|
"default": "watch-party-crx"
|
||||||
|
},
|
||||||
|
"targets": {
|
||||||
|
"watch-party-crx": {
|
||||||
|
"hosting": {
|
||||||
|
"website": [
|
||||||
|
"watch-party-crx"
|
||||||
|
],
|
||||||
|
"admin": [
|
||||||
|
"watch-party-admin"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+3
-1
@@ -1,7 +1,9 @@
|
|||||||
import firebase from "firebase/app";
|
import firebase from "firebase/app";
|
||||||
import "firebase/auth";
|
import "firebase/auth";
|
||||||
|
|
||||||
const API = "http://localhost:5000/watch-party-crx/us-central1/admin";
|
const API = window.location.href.includes("localhost")
|
||||||
|
? "http://localhost:5000/watch-party-crx/us-central1/admin"
|
||||||
|
: "https://us-central1-watch-party-crx.cloudfunctions.net/admin";
|
||||||
|
|
||||||
const fetcher = async ({ endpoint, method, bodyData }) => {
|
const fetcher = async ({ endpoint, method, bodyData }) => {
|
||||||
const idToken = await firebase.auth().currentUser.getIdToken();
|
const idToken = await firebase.auth().currentUser.getIdToken();
|
||||||
|
|||||||
@@ -336,7 +336,13 @@ export default class Dashboard extends Component {
|
|||||||
});
|
});
|
||||||
this.setState({
|
this.setState({
|
||||||
refreshing: false,
|
refreshing: false,
|
||||||
newMessage: emptyMessage,
|
newMessage: {
|
||||||
|
type: "",
|
||||||
|
text: "",
|
||||||
|
uid: "<system>",
|
||||||
|
name: "",
|
||||||
|
endpoint: "",
|
||||||
|
},
|
||||||
messageModel: false,
|
messageModel: false,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
Generated
+28
-11
@@ -1190,7 +1190,6 @@
|
|||||||
"version": "7.9.0",
|
"version": "7.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.0.tgz",
|
||||||
"integrity": "sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA==",
|
"integrity": "sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"regenerator-runtime": "^0.13.4"
|
"regenerator-runtime": "^0.13.4"
|
||||||
},
|
},
|
||||||
@@ -1198,8 +1197,7 @@
|
|||||||
"regenerator-runtime": {
|
"regenerator-runtime": {
|
||||||
"version": "0.13.5",
|
"version": "0.13.5",
|
||||||
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
|
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
|
||||||
"integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==",
|
"integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA=="
|
||||||
"dev": true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -4393,12 +4391,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"configstore": {
|
"configstore": {
|
||||||
"version": "3.1.2",
|
"version": "3.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.4.tgz",
|
||||||
"integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==",
|
"integrity": "sha512-0zrqA+vOj4tKAFjho2DjcPby8YNYvU0g2fJLusolvRxpeC3qzfLTrTdPK1/lreiOd2J6prloAR6dcXhcr7mJEw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"dot-prop": "^4.1.0",
|
"dot-prop-legacy": "^4.2.1",
|
||||||
"graceful-fs": "^4.1.2",
|
"graceful-fs": "^4.1.2",
|
||||||
"make-dir": "^1.0.0",
|
"make-dir": "^1.0.0",
|
||||||
"unique-string": "^1.0.0",
|
"unique-string": "^1.0.0",
|
||||||
@@ -5378,10 +5376,10 @@
|
|||||||
"tslib": "^1.10.0"
|
"tslib": "^1.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dot-prop": {
|
"dot-prop-legacy": {
|
||||||
"version": "4.2.0",
|
"version": "4.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/dot-prop-legacy/-/dot-prop-legacy-4.2.1.tgz",
|
||||||
"integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
|
"integrity": "sha512-OpVdloKY3b038o/XJ8zV0b6Uh2VZ/WJhdG2L94YOy+OeFjTZBWxeYfQVx5doIezkWCg7UVTjP2hGQBeSeljTag==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"is-obj": "^1.0.0"
|
"is-obj": "^1.0.0"
|
||||||
@@ -10866,6 +10864,11 @@
|
|||||||
"p-is-promise": "^2.0.0"
|
"p-is-promise": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"memoize-one": {
|
||||||
|
"version": "5.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz",
|
||||||
|
"integrity": "sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA=="
|
||||||
|
},
|
||||||
"memory-fs": {
|
"memory-fs": {
|
||||||
"version": "0.4.1",
|
"version": "0.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
|
||||||
@@ -14259,6 +14262,20 @@
|
|||||||
"prop-types": "^15.6.2"
|
"prop-types": "^15.6.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"react-virtualized-auto-sizer": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-MYXhTY1BZpdJFjUovvYHVBmkq79szK/k7V3MO+36gJkWGkrXKtyr4vCPtpphaTLRAdDNoYEYFZWE8LjN+PIHNg=="
|
||||||
|
},
|
||||||
|
"react-window": {
|
||||||
|
"version": "1.8.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.5.tgz",
|
||||||
|
"integrity": "sha512-HeTwlNa37AFa8MDZFZOKcNEkuF2YflA0hpGPiTT9vR7OawEt+GZbfM6wqkBahD3D3pUjIabQYzsnY/BSJbgq6Q==",
|
||||||
|
"requires": {
|
||||||
|
"@babel/runtime": "^7.0.0",
|
||||||
|
"memoize-one": ">=3.1.1 <6"
|
||||||
|
}
|
||||||
|
},
|
||||||
"read-pkg": {
|
"read-pkg": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
|
||||||
|
|||||||
+4
-1
@@ -2,7 +2,10 @@
|
|||||||
"name": "watch-party-crx",
|
"name": "watch-party-crx",
|
||||||
"version": "1.6.2",
|
"version": "1.6.2",
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {},
|
"dependencies": {
|
||||||
|
"react-virtualized-auto-sizer": "^1.0.2",
|
||||||
|
"react-window": "^1.8.5"
|
||||||
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node scripts/start.js",
|
"start": "node scripts/start.js",
|
||||||
"build": "node scripts/build.js",
|
"build": "node scripts/build.js",
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 6.1 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1,94 @@
|
|||||||
|
import React, { Component } from "react";
|
||||||
|
|
||||||
|
const setInitialState = (settings) => {
|
||||||
|
const {
|
||||||
|
itemHeight,
|
||||||
|
amount,
|
||||||
|
tolerance,
|
||||||
|
minIndex,
|
||||||
|
maxIndex,
|
||||||
|
startIndex,
|
||||||
|
} = settings;
|
||||||
|
const viewportHeight = amount * itemHeight;
|
||||||
|
const totalHeight = (maxIndex - minIndex + 1) * itemHeight;
|
||||||
|
const toleranceHeight = tolerance * itemHeight;
|
||||||
|
const bufferHeight = viewportHeight + 2 * toleranceHeight;
|
||||||
|
const bufferedItems = amount + 2 * tolerance;
|
||||||
|
const itemsAbove = startIndex - tolerance - minIndex;
|
||||||
|
const topPaddingHeight = itemsAbove * itemHeight;
|
||||||
|
const bottomPaddingHeight = totalHeight - topPaddingHeight;
|
||||||
|
const initialPosition = topPaddingHeight + toleranceHeight;
|
||||||
|
return {
|
||||||
|
settings,
|
||||||
|
viewportHeight,
|
||||||
|
totalHeight,
|
||||||
|
toleranceHeight,
|
||||||
|
bufferHeight,
|
||||||
|
bufferedItems,
|
||||||
|
topPaddingHeight,
|
||||||
|
bottomPaddingHeight,
|
||||||
|
initialPosition,
|
||||||
|
data: [],
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class Scroller extends Component {
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
this.state = setInitialState(props.settings);
|
||||||
|
this.viewportElement = React.createRef();
|
||||||
|
}
|
||||||
|
|
||||||
|
componentDidMount() {
|
||||||
|
this.viewportElement.current.scrollTop = this.state.initialPosition;
|
||||||
|
if (!this.state.initialPosition) {
|
||||||
|
this.runScroller({ target: { scrollTop: 0 } });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
runScroller = ({ target: { scrollTop } }) => {
|
||||||
|
const {
|
||||||
|
totalHeight,
|
||||||
|
toleranceHeight,
|
||||||
|
bufferedItems,
|
||||||
|
settings: { itemHeight, minIndex },
|
||||||
|
} = this.state;
|
||||||
|
const index =
|
||||||
|
minIndex + Math.floor((scrollTop - toleranceHeight) / itemHeight);
|
||||||
|
const data = this.props.get(index, bufferedItems);
|
||||||
|
const topPaddingHeight = Math.max((index - minIndex) * itemHeight, 0);
|
||||||
|
const bottomPaddingHeight = Math.max(
|
||||||
|
totalHeight - topPaddingHeight - data.length * itemHeight,
|
||||||
|
0
|
||||||
|
);
|
||||||
|
|
||||||
|
this.setState({
|
||||||
|
topPaddingHeight,
|
||||||
|
bottomPaddingHeight,
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const {
|
||||||
|
viewportHeight,
|
||||||
|
topPaddingHeight,
|
||||||
|
bottomPaddingHeight,
|
||||||
|
data,
|
||||||
|
} = this.state;
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
className="viewport"
|
||||||
|
ref={this.viewportElement}
|
||||||
|
onScroll={this.runScroller}
|
||||||
|
style={{ height: viewportHeight }}
|
||||||
|
>
|
||||||
|
<div style={{ height: topPaddingHeight }} />
|
||||||
|
{data.map(this.props.row)}
|
||||||
|
<div style={{ height: bottomPaddingHeight }} />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Scroller;
|
||||||
+17
-9
@@ -1,18 +1,26 @@
|
|||||||
{
|
{
|
||||||
"functions": {
|
"functions": {
|
||||||
"predeploy": [
|
"predeploy": ["npm --prefix \"$RESOURCE_DIR\" run lint"],
|
||||||
"npm --prefix \"$RESOURCE_DIR\" run lint"
|
|
||||||
],
|
|
||||||
"source": "functions"
|
"source": "functions"
|
||||||
},
|
},
|
||||||
"hosting": {
|
"hosting": [
|
||||||
|
{
|
||||||
|
"target": "website",
|
||||||
"public": "website",
|
"public": "website",
|
||||||
"ignore": [
|
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"]
|
||||||
"firebase.json",
|
|
||||||
"**/.*",
|
|
||||||
"**/node_modules/**"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"target": "admin",
|
||||||
|
"public": "admin/build",
|
||||||
|
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
|
||||||
|
"rewrites": [
|
||||||
|
{
|
||||||
|
"source": "**",
|
||||||
|
"destination": "/index.html"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
"emulators": {
|
"emulators": {
|
||||||
"functions": {
|
"functions": {
|
||||||
"port": 5001
|
"port": 5001
|
||||||
|
|||||||
+1
-1
@@ -31,7 +31,7 @@ app.put("/updateAdminOnly/:rid/:adminOnly", FunctionModules.updateAdminOnly);
|
|||||||
const admin = express();
|
const admin = express();
|
||||||
admin.use(
|
admin.use(
|
||||||
cors({
|
cors({
|
||||||
origin: ["http://localhost:3000", "https://admin.chromewatchparty.com/*"],
|
origin: true,
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
admin.use(AdminModules.superAuth);
|
admin.use(AdminModules.superAuth);
|
||||||
|
|||||||
Reference in New Issue
Block a user