mirror of
https://github.com/documize/community.git
synced 2025-07-23 23:29:42 +02:00
fix local storage of last used space id
This commit is contained in:
parent
8fcf67ef17
commit
f4fc567292
2 changed files with 163 additions and 155 deletions
|
@ -11,6 +11,7 @@
|
||||||
|
|
||||||
import Ember from 'ember';
|
import Ember from 'ember';
|
||||||
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';
|
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';
|
||||||
|
import { isNotFoundError } from 'ember-ajax/errors';
|
||||||
|
|
||||||
const {
|
const {
|
||||||
isPresent
|
isPresent
|
||||||
|
@ -31,20 +32,23 @@ export default Ember.Route.extend(AuthenticatedRouteMixin, {
|
||||||
|
|
||||||
if (is.empty(params)) {
|
if (is.empty(params)) {
|
||||||
let lastFolder = this.get('localStorage').getSessionItem("folder");
|
let lastFolder = this.get('localStorage').getSessionItem("folder");
|
||||||
|
let self = this;
|
||||||
|
|
||||||
//If folder lastFolder is defined
|
//If folder lastFolder is defined
|
||||||
if (isPresent(lastFolder)) {
|
if (isPresent(lastFolder)) {
|
||||||
return this.get('folderService').getFolder(lastFolder).then((folder) => {
|
return this.get('folderService').getFolder(lastFolder).then((folder) => {
|
||||||
//if Response is null or undefined redirect to login else transitionTo dashboard
|
//if Response is null or undefined redirect to login else transitionTo dashboard
|
||||||
if (Ember.isNone(folder)) {
|
if (Ember.isNone(folder)) {
|
||||||
this.transitionTo('auth.login');
|
self.get('localStorage').clearSessionItem("folder");
|
||||||
|
this.transitionTo('application');
|
||||||
}
|
}
|
||||||
|
|
||||||
Ember.set(this, 'folder', folder);
|
Ember.set(this, 'folder', folder);
|
||||||
this.transitionTo('folders.folder', folder.get('id'), folder.get('slug'));
|
this.transitionTo('folders.folder', folder.get('id'), folder.get('slug'));
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
//if there was an error redirect to login
|
//if there was an error redirect to login
|
||||||
this.transitionTo('auth.login');
|
self.get('localStorage').clearSessionItem("folder");
|
||||||
|
this.transitionTo('application');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,11 +68,16 @@ export default Ember.Route.extend(AuthenticatedRouteMixin, {
|
||||||
|
|
||||||
//If folder route has params
|
//If folder route has params
|
||||||
if (isPresent(params)) {
|
if (isPresent(params)) {
|
||||||
|
let self = this;
|
||||||
let folderId = this.paramsFor('folders.folder').folder_id;
|
let folderId = this.paramsFor('folders.folder').folder_id;
|
||||||
|
|
||||||
return this.get('folderService').getFolder(folderId).then((folder) => {
|
return this.get('folderService').getFolder(folderId).then((folder) => {
|
||||||
Ember.set(this, 'folder', folder);
|
Ember.set(this, 'folder', folder);
|
||||||
|
}).catch(function (error) {
|
||||||
|
if (isNotFoundError(error)) {
|
||||||
|
// handle 404 errors here
|
||||||
|
self.transitionTo('application');
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,194 +14,193 @@ import models from '../utils/model';
|
||||||
import BaseService from '../services/base';
|
import BaseService from '../services/base';
|
||||||
|
|
||||||
const {
|
const {
|
||||||
get
|
get
|
||||||
} = Ember;
|
} = Ember;
|
||||||
|
|
||||||
export default BaseService.extend({
|
export default BaseService.extend({
|
||||||
sessionService: Ember.inject.service('session'),
|
sessionService: Ember.inject.service('session'),
|
||||||
ajax: Ember.inject.service(),
|
ajax: Ember.inject.service(),
|
||||||
localStorage: Ember.inject.service(),
|
localStorage: Ember.inject.service(),
|
||||||
|
|
||||||
|
// selected folder
|
||||||
|
currentFolder: null,
|
||||||
|
canEditCurrentFolder: false,
|
||||||
|
|
||||||
// selected folder
|
// Add a new folder.
|
||||||
currentFolder: null,
|
add(folder) {
|
||||||
canEditCurrentFolder: false,
|
|
||||||
|
|
||||||
// Add a new folder.
|
return this.get('ajax').post(`folders`, {
|
||||||
add(folder) {
|
contentType: 'json',
|
||||||
|
data: JSON.stringify(folder)
|
||||||
|
}).then((folder) => {
|
||||||
|
let folderModel = models.FolderModel.create(folder);
|
||||||
|
return folderModel;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
return this.get('ajax').post(`folders`, {
|
// Returns folder model for specified folder id.
|
||||||
contentType: 'json',
|
getFolder(id) {
|
||||||
data: JSON.stringify(folder)
|
|
||||||
}).then((folder)=>{
|
|
||||||
let folderModel = models.FolderModel.create(folder);
|
|
||||||
return folderModel;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
// Returns folder model for specified folder id.
|
return this.get('ajax').request(`folders/${id}`, {
|
||||||
getFolder(id) {
|
method: 'GET'
|
||||||
|
}).then((response) => {
|
||||||
|
let folder = models.FolderModel.create(response);
|
||||||
|
return folder;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
return this.get('ajax').request(`folders/${id}`, {
|
// Returns all folders that user can see.
|
||||||
method: 'GET'
|
getAll() {
|
||||||
}).then((response)=>{
|
let self = this;
|
||||||
let folder = models.FolderModel.create(response);
|
|
||||||
return folder;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
// Returns all folders that user can see.
|
if (this.get('folders') != null) {
|
||||||
getAll() {
|
return new Ember.RSVP.Promise(function (resolve) {
|
||||||
let self = this;
|
resolve(self.get('folders'));
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return this.reload();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
if (this.get('folders') != null) {
|
// Updates an existing folder record.
|
||||||
return new Ember.RSVP.Promise(function(resolve) {
|
save(folder) {
|
||||||
resolve(self.get('folders'));
|
let id = folder.get('id');
|
||||||
});
|
|
||||||
} else {
|
|
||||||
return this.reload();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// Updates an existing folder record.
|
return this.get('ajax').request(`folders/${id}`, {
|
||||||
save(folder) {
|
method: 'PUT',
|
||||||
let id = folder.get('id');
|
contentType: 'json',
|
||||||
|
data: JSON.stringify(folder)
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
return this.get('ajax').request(`folders/${id}`, {
|
remove: function (folderId, moveToId) {
|
||||||
method: 'PUT',
|
let url = `folders/${folderId}/move/${moveToId}`;
|
||||||
contentType: 'json',
|
|
||||||
data: JSON.stringify(folder)
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
remove: function(folderId, moveToId) {
|
return this.get('ajax').request(url, {
|
||||||
let url = `folders/${folderId}/move/${moveToId}`;
|
method: 'DELETE'
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
return this.get('ajax').request(url, {
|
onboard: function (folderId, payload) {
|
||||||
method: 'DELETE'
|
let url = `public/share/${folderId}`;
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
onboard: function(folderId, payload) {
|
return this.get('ajax').post(url, {
|
||||||
let url = `public/share/${folderId}`;
|
contentType: "application/json",
|
||||||
|
data: payload
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
return this.get('ajax').post(url, {
|
// getProtectedFolderInfo returns non-private folders and who has access to them.
|
||||||
contentType: "application/json",
|
getProtectedFolderInfo: function () {
|
||||||
data: payload
|
return this.get('ajax').request(`folders?filter=viewers`, {
|
||||||
});
|
method: "GET"
|
||||||
},
|
}).then((response) => {
|
||||||
|
let data = [];
|
||||||
|
_.each(response, function (obj) {
|
||||||
|
data.pushObject(models.ProtectedFolderParticipant.create(obj));
|
||||||
|
});
|
||||||
|
|
||||||
// getProtectedFolderInfo returns non-private folders and who has access to them.
|
return data;
|
||||||
getProtectedFolderInfo: function() {
|
});
|
||||||
return this.get('ajax').request(`folders?filter=viewers`, {
|
},
|
||||||
method: "GET"
|
|
||||||
}).then((response)=>{
|
|
||||||
let data = [];
|
|
||||||
_.each(response, function(obj) {
|
|
||||||
data.pushObject(models.ProtectedFolderParticipant.create(obj));
|
|
||||||
});
|
|
||||||
|
|
||||||
return data;
|
// reloads and caches folders.
|
||||||
});
|
reload() {
|
||||||
},
|
|
||||||
|
|
||||||
// reloads and caches folders.
|
return this.get('ajax').request(`folders`, {
|
||||||
reload() {
|
method: "GET"
|
||||||
|
}).then((response) => {
|
||||||
|
let data = [];
|
||||||
|
_.each(response, function (obj) {
|
||||||
|
data.pushObject(models.FolderModel.create(obj));
|
||||||
|
});
|
||||||
|
|
||||||
return this.get('ajax').request(`folders`, {
|
return data;
|
||||||
method: "GET"
|
});
|
||||||
}).then((response)=>{
|
},
|
||||||
let data = [];
|
|
||||||
_.each(response, function(obj) {
|
|
||||||
data.pushObject(models.FolderModel.create(obj));
|
|
||||||
});
|
|
||||||
|
|
||||||
return data;
|
// so who can see/edit this folder?
|
||||||
});
|
getPermissions(folderId) {
|
||||||
},
|
|
||||||
|
|
||||||
// so who can see/edit this folder?
|
return this.get('ajax').request(`folders/${folderId}/permissions`, {
|
||||||
getPermissions(folderId) {
|
method: "GET"
|
||||||
|
}).then((response) => {
|
||||||
|
let data = [];
|
||||||
|
_.each(response, function (obj) {
|
||||||
|
data.pushObject(models.FolderPermissionModel.create(obj));
|
||||||
|
});
|
||||||
|
|
||||||
return this.get('ajax').request(`folders/${folderId}/permissions`, {
|
return data;
|
||||||
method: "GET"
|
});
|
||||||
}).then((response)=>{
|
},
|
||||||
let data = [];
|
|
||||||
_.each(response, function(obj) {
|
|
||||||
data.pushObject(models.FolderPermissionModel.create(obj));
|
|
||||||
});
|
|
||||||
|
|
||||||
return data;
|
// persist folder permissions
|
||||||
});
|
savePermissions(folderId, payload) {
|
||||||
},
|
|
||||||
|
|
||||||
// persist folder permissions
|
return this.get('ajax').request(`folders/${folderId}/permissions`, {
|
||||||
savePermissions(folderId, payload) {
|
method: 'PUT',
|
||||||
|
contentType: 'json',
|
||||||
|
data: JSON.stringify(payload)
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
return this.get('ajax').request(`folders/${folderId}/permissions`, {
|
// share this folder with new users!
|
||||||
method: 'PUT',
|
share(folderId, invitation) {
|
||||||
contentType: 'json',
|
|
||||||
data: JSON.stringify(payload)
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
// share this folder with new users!
|
return this.get('ajax').post(`folders/${folderId}/invitation`, {
|
||||||
share(folderId, invitation) {
|
contentType: 'json',
|
||||||
|
data: JSON.stringify(invitation)
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
return this.get('ajax').post(`folders/${folderId}/invitation`, {
|
// Current folder caching
|
||||||
contentType: 'json',
|
setCurrentFolder(folder) {
|
||||||
data: JSON.stringify(invitation)
|
if (is.undefined(folder) || is.null(folder)) {
|
||||||
});
|
return;
|
||||||
},
|
}
|
||||||
|
|
||||||
// Current folder caching
|
this.set('currentFolder', folder);
|
||||||
setCurrentFolder(folder) {
|
this.get('localStorage').storeSessionItem("folder", get(folder, 'id'));
|
||||||
if (is.undefined(folder) || is.null(folder)) {
|
this.set('canEditCurrentFolder', false);
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.set('currentFolder', folder);
|
let userId = this.get('sessionService.user.id');
|
||||||
this.get('localStorage').storeSessionItem("folder", get(folder, 'id'));
|
if (userId === "") {
|
||||||
this.set('canEditCurrentFolder', false);
|
userId = "0";
|
||||||
|
}
|
||||||
|
|
||||||
let userId = this.get('sessionService.user.id');
|
let url = `users/${userId}/permissions`;
|
||||||
if (userId === "") {
|
|
||||||
userId = "0";
|
|
||||||
}
|
|
||||||
|
|
||||||
let url = `users/${userId}/permissions`;
|
return this.get('ajax').request(url).then((folderPermissions) => {
|
||||||
|
// safety check
|
||||||
|
this.set('canEditCurrentFolder', false);
|
||||||
|
|
||||||
return this.get('ajax').request(url).then((folderPermissions) => {
|
if (folderPermissions.length === 0) {
|
||||||
// safety check
|
return;
|
||||||
this.set('canEditCurrentFolder', false);
|
}
|
||||||
|
|
||||||
if (folderPermissions.length === 0) {
|
let result = [];
|
||||||
return;
|
let folderId = folder.get('id');
|
||||||
}
|
|
||||||
|
|
||||||
let result = [];
|
folderPermissions.forEach(function (item) {
|
||||||
let folderId = folder.get('id');
|
if (item.folderId === folderId) {
|
||||||
|
result.push(item);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
folderPermissions.forEach(function(item) {
|
let canEdit = false;
|
||||||
if (item.folderId === folderId) {
|
|
||||||
result.push(item);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
let canEdit = false;
|
result.forEach(function (permission) {
|
||||||
|
if (permission.userId === userId) {
|
||||||
|
canEdit = permission.canEdit;
|
||||||
|
}
|
||||||
|
|
||||||
result.forEach(function(permission) {
|
if (permission.userId === "" && !canEdit) {
|
||||||
if (permission.userId === userId) {
|
canEdit = permission.canEdit;
|
||||||
canEdit = permission.canEdit;
|
}
|
||||||
}
|
});
|
||||||
|
Ember.run(() => {
|
||||||
if (permission.userId === "" && !canEdit) {
|
this.set('canEditCurrentFolder', canEdit && this.get('sessionService.authenticated'));
|
||||||
canEdit = permission.canEdit;
|
});
|
||||||
}
|
});
|
||||||
});
|
},
|
||||||
Ember.run(() => {
|
});
|
||||||
this.set('canEditCurrentFolder', canEdit && this.get('sessionService.authenticated'));
|
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
|
||||||
});
|
|
Loading…
Add table
Add a link
Reference in a new issue