1
0
Fork 0
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:
Elliott Stoneham 2016-07-15 18:16:22 +01:00
parent 8fcf67ef17
commit f4fc567292
2 changed files with 163 additions and 155 deletions

View file

@ -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');
}
}); });
} }

View file

@ -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'));
});
});
},
});