First commit
This commit is contained in:
134
hugo/static/js/alpine-alphabreed.js
Normal file
134
hugo/static/js/alpine-alphabreed.js
Normal file
@@ -0,0 +1,134 @@
|
||||
document.addEventListener('alpine:init', () => {
|
||||
Alpine.store('alphabreed', {
|
||||
backUrl: '/',
|
||||
pending: false,
|
||||
|
||||
async apiCall(method, url, data) {
|
||||
this.pending = true;
|
||||
const options = {
|
||||
method: method,
|
||||
headers: { 'Authorization': localStorage.getItem('alphabreedtoken') }
|
||||
};
|
||||
if (data) {
|
||||
options.body = new FormData();
|
||||
for (let key in data)
|
||||
if (data.hasOwnProperty(key))
|
||||
options.body.append(key, data[key]);
|
||||
}
|
||||
const response = await fetch(url, options);
|
||||
this.pending = false;
|
||||
if (!response.ok)
|
||||
return false;
|
||||
if (response.status == 204)
|
||||
return true;
|
||||
return await response.json();
|
||||
},
|
||||
|
||||
async checkToken() {
|
||||
const token = localStorage.getItem('alphabreedtoken');
|
||||
if (!token) {
|
||||
window.location = '/login/?back='+encodeURIComponent(this.backUrl);
|
||||
return false;
|
||||
}
|
||||
const result = await this.apiCall('POST', '/api/collections/users/auth-refresh');
|
||||
if (!result.token) {
|
||||
window.location = '/login/?back='+encodeURIComponent(this.backUrl);
|
||||
return false;
|
||||
}
|
||||
localStorage.setItem('alphabreedtoken', result.token);
|
||||
localStorage.setItem('alphabreedid', result.record.id);
|
||||
return true;
|
||||
},
|
||||
|
||||
async createBookmarkCategory(name) {
|
||||
const result = await this.apiCall('POST',
|
||||
'/api/collections/bookmarkcategories/records',
|
||||
{ owner: localStorage.getItem('alphabreedid'), name: name }
|
||||
);
|
||||
return result.id;
|
||||
},
|
||||
|
||||
async updateBookmarkCategory(id, name) {
|
||||
await this.apiCall('PATCH',
|
||||
'/api/collections/bookmarkcategories/records/'+encodeURIComponent(id),
|
||||
{ owner: localStorage.getItem('alphabreedid'), name: name }
|
||||
);
|
||||
},
|
||||
|
||||
async deleteBookmarkCategory(id) {
|
||||
await this.apiCall('DELETE',
|
||||
'/api/collections/bookmarkcategories/records/'+encodeURIComponent(id)
|
||||
);
|
||||
},
|
||||
|
||||
async createBookmark(categoryId, name, url) {
|
||||
const result = await this.apiCall('POST',
|
||||
'/api/collections/bookmarks/records',
|
||||
{
|
||||
owner: localStorage.getItem('alphabreedid'),
|
||||
category: categoryId,
|
||||
name: name,
|
||||
url: url
|
||||
}
|
||||
);
|
||||
return result.id;
|
||||
},
|
||||
|
||||
async updateBookmark(id, categoryId, name, url) {
|
||||
await this.apiCall('PATCH',
|
||||
'/api/collections/bookmarks/records/'+encodeURIComponent(id),
|
||||
{
|
||||
owner: localStorage.getItem('alphabreedid'),
|
||||
category: categoryId,
|
||||
name: name,
|
||||
url: url
|
||||
}
|
||||
);
|
||||
},
|
||||
|
||||
async deleteBookmark(id) {
|
||||
await this.apiCall('DELETE',
|
||||
'/api/collections/bookmarks/records/'+encodeURIComponent(id)
|
||||
);
|
||||
},
|
||||
|
||||
async getBookmarkCategories() {
|
||||
const result = await this.apiCall('GET',
|
||||
'/api/collections/bookmarkcategories/records?perPage=9999&fields=id,name&sort=name'
|
||||
);
|
||||
return result.items;
|
||||
},
|
||||
|
||||
async getBookmarks() {
|
||||
const result = await this.apiCall('GET',
|
||||
'/api/collections/bookmarks/records?perPage=1000&expand=category&fields=id,name,url,expand.category.id,expand.category.name&sort=name'
|
||||
);
|
||||
return result.items;
|
||||
},
|
||||
|
||||
async getNotes() {
|
||||
const owner = localStorage.getItem('alphabreedid');
|
||||
const result = await this.apiCall('GET',
|
||||
'/api/collections/notes/records/'+encodeURIComponent(owner)+'?fields=notes'
|
||||
);
|
||||
if (result === false)
|
||||
return false;
|
||||
return result.notes;
|
||||
},
|
||||
|
||||
async createNotes(notes) {
|
||||
return await this.apiCall('POST',
|
||||
'/api/collections/notes/records',
|
||||
{ id: localStorage.getItem('alphabreedid'), notes: notes }
|
||||
);
|
||||
},
|
||||
|
||||
async updateNotes(notes) {
|
||||
const owner = localStorage.getItem('alphabreedid');
|
||||
return await this.apiCall('PATCH',
|
||||
'/api/collections/notes/records/'+encodeURIComponent(owner),
|
||||
{ notes: notes }
|
||||
);
|
||||
},
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user