diff --git a/.gitignore b/.gitignore
index e77c88ec..c32ac8f1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,12 +1,12 @@
server/public/js
-server/public/index.html
+server/public/index.html
node_modules/
babel_cache/
.DS_Store
\#*\#
-.\#*
+.\#*
*.log
*~
*.swp
*.swo
-
\ No newline at end of file
+.tern-port
\ No newline at end of file
diff --git a/client/assets/bucket.svg b/client/assets/bucket.svg
new file mode 100644
index 00000000..8380a9bb
--- /dev/null
+++ b/client/assets/bucket.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/client/assets/delete.svg b/client/assets/delete.svg
new file mode 100644
index 00000000..f7358b02
--- /dev/null
+++ b/client/assets/delete.svg
@@ -0,0 +1,43 @@
+
+
+
+
diff --git a/client/assets/download.svg b/client/assets/download.svg
new file mode 100644
index 00000000..ee148bd4
--- /dev/null
+++ b/client/assets/download.svg
@@ -0,0 +1,10 @@
+
+
+
diff --git a/client/assets/dropbox.png b/client/assets/dropbox.png
new file mode 100644
index 00000000..19515de3
Binary files /dev/null and b/client/assets/dropbox.png differ
diff --git a/client/assets/edit.svg b/client/assets/edit.svg
new file mode 100644
index 00000000..463b377e
--- /dev/null
+++ b/client/assets/edit.svg
@@ -0,0 +1,9 @@
+
+
diff --git a/client/assets/error.svg b/client/assets/error.svg
new file mode 100644
index 00000000..e5bcec14
--- /dev/null
+++ b/client/assets/error.svg
@@ -0,0 +1,37 @@
+
+
+
diff --git a/client/assets/file.svg b/client/assets/file.svg
new file mode 100644
index 00000000..3803ac02
--- /dev/null
+++ b/client/assets/file.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/client/assets/folder copy.svg b/client/assets/folder copy.svg
new file mode 100644
index 00000000..f1b08731
--- /dev/null
+++ b/client/assets/folder copy.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/client/assets/folder.svg b/client/assets/folder.svg
new file mode 100644
index 00000000..f1b08731
--- /dev/null
+++ b/client/assets/folder.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/client/assets/google-drive.png b/client/assets/google-drive.png
new file mode 100644
index 00000000..7d0135b0
Binary files /dev/null and b/client/assets/google-drive.png differ
diff --git a/client/assets/link.svg b/client/assets/link.svg
new file mode 100644
index 00000000..f1b08731
--- /dev/null
+++ b/client/assets/link.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/client/assets/loader.svg b/client/assets/loader.svg
new file mode 100644
index 00000000..f997200a
--- /dev/null
+++ b/client/assets/loader.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/client/assets/loader_white.svg b/client/assets/loader_white.svg
new file mode 100644
index 00000000..ad3b741a
--- /dev/null
+++ b/client/assets/loader_white.svg
@@ -0,0 +1 @@
+
diff --git a/client/assets/pause.svg b/client/assets/pause.svg
new file mode 100644
index 00000000..7c8b0090
--- /dev/null
+++ b/client/assets/pause.svg
@@ -0,0 +1,38 @@
+
+
+
diff --git a/client/assets/play.svg b/client/assets/play.svg
new file mode 100644
index 00000000..f22527cf
--- /dev/null
+++ b/client/assets/play.svg
@@ -0,0 +1,37 @@
+
+
+
diff --git a/client/assets/power.svg b/client/assets/power.svg
new file mode 100644
index 00000000..06e7e0ba
--- /dev/null
+++ b/client/assets/power.svg
@@ -0,0 +1,39 @@
+
+
+
diff --git a/client/assets/save.svg b/client/assets/save.svg
new file mode 100644
index 00000000..6cec20d4
--- /dev/null
+++ b/client/assets/save.svg
@@ -0,0 +1,38 @@
+
+
+
+
diff --git a/client/pages/connectpage.js b/client/pages/connectpage.js
index 8a714f41..d388e177 100644
--- a/client/pages/connectpage.js
+++ b/client/pages/connectpage.js
@@ -17,9 +17,11 @@ export class ConnectPage extends React.Component {
remember_me: window.localStorage.hasOwnProperty('credentials') ? true : false,
loading: false,
error: null,
- marginTop: this._marginTop()
+ doing_a_third_party_login: false
};
+ }
+ componentDidMount(){
// adapted from: https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript
function getParam(name) {
const regex = new RegExp("[?]" + name.replace(/[\[\]]/g, "\\$&") + "(=([^]*)|&|#|$)");
@@ -31,76 +33,54 @@ export class ConnectPage extends React.Component {
// dropbox login
if(getParam('state') === 'dropbox'){
- this.state.loading = true;
this.authenticate({bearer: getParam('access_token'), type: 'dropbox'});
+ this.setState({doing_a_third_party_login: true});
}
// google drive login
if(getParam('code')){
- this.state.loading = true;
this.authenticate({code: getParam('code'), type: 'gdrive'});
+ this.setState({doing_a_third_party_login: true});
}
}
- componentWillMount(){
- window.onresize = () => {
- this.setState({marginTop: this._marginTop()});
- };
- }
- _marginTop(){
- let size = Math.round(Math.abs((document.body.offsetHeight - 300) / 2));
- return size > 150? 150 : size;
- }
-
authenticate(params){
- if(params.type === 'dropbox') return this.login_dropbox();
- else if(params.type === 'gdrive') return this.login_google();
-
this.setState({loading: true});
Session.authenticate(params)
.then((ok) => {
- this.setState({loading: false});
invalidate();
const path = params.path && /^\//.test(params.path)? /\/$/.test(params.path) ? params.path : params.path+'/' : '/';
this.props.history.push('/files'+path);
})
.catch(err => {
- if(err && err.code === 'CANCELLED'){ return; }
this.setState({loading: false, error: err});
- window.setTimeout(() => {
- this.setState({error: null});
- }, 1000);
+ window.setTimeout(() => this.setState({error: null}), 1000);
});
}
- login_dropbox(e){
- this.setState({loading: true});
- Session.url('dropbox').then((url) => {
- window.location.href = url;
- }).catch((err) => {
- if(err && err.code === 'CANCELLED'){ return; }
- this.setState({loading: false, error: err});
- window.setTimeout(() => {
- this.setState({error: null});
- }, 1000);
- });
- }
-
- login_google(e){
- this.setState({loading: true});
- Session.url('gdrive').then((url) => {
- window.location.href = url;
- }).catch((err) => {
- if(err && err.code === 'CANCELLED'){ return }
- this.setState({loading: false, error: err});
- window.setTimeout(() => {
- this.setState({error: null});
- }, 1000);
- });
+ initiateAuthToThirdParty(source){
+ if(source === 'dropbox'){
+ this.setState({loading: true});
+ Session.url('dropbox').then((url) => {
+ window.location.href = url;
+ }).catch((err) => {
+ this.setState({loading: false, error: err});
+ window.setTimeout(() => this.setState({error: null}), 1000);
+ });
+ }else if(source === 'google'){
+ this.setState({loading: true});
+ Session.url('gdrive').then((url) => {
+ window.location.href = url;
+ }).catch((err) => {
+ this.setState({loading: false, error: err});
+ window.setTimeout(() => this.setState({error: null}), 1000);
+ });
+ }
}
onFormSubmit(data, credentials){
- this.setState({credentials: credentials});
- this.authenticate(data);
+ this.setState({credentials: credentials}, () => {
+ this.authenticate(data);
+ });
}
setRemember(state){
@@ -122,23 +102,22 @@ export class ConnectPage extends React.Component {