mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-11-18 01:42:21 -05:00
init 2
This commit is contained in:
51
frontend/src/api/api-utils.js
Normal file
51
frontend/src/api/api-utils.js
Normal file
@@ -0,0 +1,51 @@
|
||||
const baseURL = "/api/";
|
||||
import axios from "axios";
|
||||
import store from "../store/store";
|
||||
|
||||
function processResponse(response) {
|
||||
if (("data" in response) & ("snackbar" in response.data)) {
|
||||
store.commit("setSnackBar", {
|
||||
text: response.data.snackbar.text,
|
||||
type: response.data.snackbar.type,
|
||||
});
|
||||
} else return;
|
||||
}
|
||||
|
||||
const apiReq = {
|
||||
post: async function(url, data) {
|
||||
let response = await axios.post(url, data).catch(function(error) {
|
||||
if (error.response) {
|
||||
console.log("Error");
|
||||
processResponse(error.response);
|
||||
return;
|
||||
}
|
||||
});
|
||||
processResponse(response);
|
||||
return response;
|
||||
},
|
||||
|
||||
get: async function(url, data) {
|
||||
let response = await axios.get(url, data).catch(function(error) {
|
||||
if (error.response) {
|
||||
processResponse(error.response);
|
||||
return;
|
||||
} else return;
|
||||
});
|
||||
// processResponse(response);
|
||||
return response;
|
||||
},
|
||||
|
||||
delete: async function(url, data) {
|
||||
let response = await axios.delete(url, data).catch(function(error) {
|
||||
if (error.response) {
|
||||
processResponse(error.response);
|
||||
return;
|
||||
}
|
||||
});
|
||||
processResponse(response);
|
||||
return response;
|
||||
},
|
||||
};
|
||||
|
||||
export { apiReq };
|
||||
export { baseURL };
|
||||
37
frontend/src/api/backup.js
Normal file
37
frontend/src/api/backup.js
Normal file
@@ -0,0 +1,37 @@
|
||||
import { baseURL } from "./api-utils";
|
||||
import { apiReq } from "./api-utils";
|
||||
import { store } from "../store/store";
|
||||
|
||||
const backupBase = baseURL + "backups/";
|
||||
|
||||
const backupURLs = {
|
||||
// Backup
|
||||
avaiable: `${backupBase}avaiable/`,
|
||||
createBackup: `${backupBase}export/database/`,
|
||||
importBackup: (fileName) => `${backupBase}${fileName}/import/`,
|
||||
deleteBackup: (fileName) => `${backupBase}${fileName}/delete/`,
|
||||
};
|
||||
|
||||
export default {
|
||||
async requestAvailable() {
|
||||
let response = await apiReq.get(backupURLs.avaiable);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async import(fileName) {
|
||||
apiReq.post(backupURLs.importBackup(fileName));
|
||||
store.dispatch("requestRecentRecipes");
|
||||
},
|
||||
|
||||
async delete(fileName) {
|
||||
await apiReq.delete(backupURLs.deleteBackup(fileName));
|
||||
},
|
||||
|
||||
async create(tag, template) {
|
||||
let response = apiReq.post(backupURLs.createBackup, {
|
||||
tag: tag,
|
||||
template: template,
|
||||
});
|
||||
return response;
|
||||
},
|
||||
};
|
||||
46
frontend/src/api/mealplan.js
Normal file
46
frontend/src/api/mealplan.js
Normal file
@@ -0,0 +1,46 @@
|
||||
import { baseURL } from "./api-utils";
|
||||
import { apiReq } from "./api-utils";
|
||||
|
||||
const mealplanBase = baseURL + "meal-plan/";
|
||||
|
||||
const mealPlanURLs = {
|
||||
// Meals
|
||||
create: `${mealplanBase}create/`,
|
||||
today: `${mealplanBase}today/`,
|
||||
thisWeek: `${mealplanBase}this-week/`,
|
||||
all: `${mealplanBase}all/`,
|
||||
delete: (planID) => `${mealplanBase}${planID}/delete/`,
|
||||
update: (planID) => `${mealplanBase}${planID}/update/`,
|
||||
};
|
||||
|
||||
export default {
|
||||
async create(postBody) {
|
||||
let response = await apiReq.post(mealPlanURLs.create, postBody);
|
||||
return response;
|
||||
},
|
||||
|
||||
async all() {
|
||||
let response = await apiReq.get(mealPlanURLs.all);
|
||||
return response;
|
||||
},
|
||||
|
||||
async thisWeek() {
|
||||
let response = await apiReq.get(mealPlanURLs.thisWeek);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async today() {
|
||||
let response = await apiReq.get(mealPlanURLs.today);
|
||||
return response;
|
||||
},
|
||||
|
||||
async delete(id) {
|
||||
let response = await apiReq.delete(mealPlanURLs.delete(id));
|
||||
return response;
|
||||
},
|
||||
|
||||
async update(id, body) {
|
||||
let response = await apiReq.post(mealPlanURLs.update(id), body);
|
||||
return response;
|
||||
},
|
||||
};
|
||||
75
frontend/src/api/recipe.js
Normal file
75
frontend/src/api/recipe.js
Normal file
@@ -0,0 +1,75 @@
|
||||
import { baseURL } from "./api-utils";
|
||||
import { apiReq } from "./api-utils";
|
||||
import { store } from "../store/store";
|
||||
import { router } from "../main";
|
||||
import qs from "qs";
|
||||
|
||||
const recipeBase = baseURL + "recipe/";
|
||||
|
||||
const recipeURLs = {
|
||||
// Recipes
|
||||
allRecipes: baseURL + "all-recipes/",
|
||||
recipe: (slug) => recipeBase + slug + "/",
|
||||
recipeImage: (slug) => recipeBase + "image/" + slug + "/",
|
||||
createByURL: recipeBase + "create-url/",
|
||||
create: recipeBase + "create/",
|
||||
updateImage: (slug) => `${recipeBase}${slug}/update/image/`,
|
||||
update: (slug) => `${recipeBase}${slug}/update/`,
|
||||
delete: (slug) => `${recipeBase}${slug}/delete/`,
|
||||
};
|
||||
|
||||
export default {
|
||||
async createByURL(recipeURL) {
|
||||
let response = await apiReq.post(recipeURLs.createByURL, { url: recipeURL });
|
||||
let recipeSlug = response.data;
|
||||
store.dispatch("requestRecentRecipes");
|
||||
router.push(`/recipe/${recipeSlug}`);
|
||||
},
|
||||
|
||||
async create(recipeData) {
|
||||
let response = await apiReq.post(recipeURLs.create, recipeData);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async requestDetails(recipeSlug) {
|
||||
let response = await apiReq.get(recipeURLs.recipe(recipeSlug));
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async updateImage(recipeSlug, fileObject) {
|
||||
const fd = new FormData();
|
||||
fd.append("image", fileObject);
|
||||
fd.append("extension", fileObject.name.split(".").pop());
|
||||
|
||||
let response = apiReq.post(recipeURLs.updateImage(recipeSlug), fd);
|
||||
|
||||
return response;
|
||||
},
|
||||
|
||||
async update(data) {
|
||||
const recipeSlug = data.slug;
|
||||
|
||||
apiReq.post(recipeURLs.update(recipeSlug), data);
|
||||
store.dispatch("requestRecentRecipes");
|
||||
},
|
||||
|
||||
async delete(recipeSlug) {
|
||||
apiReq.delete(recipeURLs.delete(recipeSlug));
|
||||
store.dispatch("requestRecentRecipes");
|
||||
router.push(`/`);
|
||||
},
|
||||
|
||||
async allByKeys(recipeKeys, num = 100) {
|
||||
const response = await apiReq.get(recipeURLs.allRecipes, {
|
||||
params: {
|
||||
keys: recipeKeys,
|
||||
num: num,
|
||||
},
|
||||
paramsSerializer: (params) => {
|
||||
return qs.stringify(params, { arrayFormat: "repeat" });
|
||||
},
|
||||
});
|
||||
|
||||
return response.data;
|
||||
},
|
||||
};
|
||||
27
frontend/src/api/settings.js
Normal file
27
frontend/src/api/settings.js
Normal file
@@ -0,0 +1,27 @@
|
||||
import { baseURL } from "./api-utils";
|
||||
import { apiReq } from "./api-utils";
|
||||
|
||||
const settingsBase = baseURL + "site-settings/";
|
||||
|
||||
const settingsURLs = {
|
||||
siteSettings: `${settingsBase}`,
|
||||
updateSiteSettings: `${settingsBase}update/`,
|
||||
testWebhooks: `${settingsBase}webhooks/test/`,
|
||||
};
|
||||
|
||||
export default {
|
||||
async requestAll() {
|
||||
let response = await apiReq.get(settingsURLs.siteSettings);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async testWebhooks() {
|
||||
let response = await apiReq.post(settingsURLs.testWebhooks);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async update(body) {
|
||||
let response = await apiReq.post(settingsURLs.updateSiteSettings, body);
|
||||
return response.data;
|
||||
},
|
||||
};
|
||||
44
frontend/src/api/themes.js
Normal file
44
frontend/src/api/themes.js
Normal file
@@ -0,0 +1,44 @@
|
||||
import { baseURL } from "./api-utils";
|
||||
import { apiReq } from "./api-utils";
|
||||
|
||||
const themesBase = baseURL + "site-settings/";
|
||||
|
||||
const settingsURLs = {
|
||||
allThemes: `${themesBase}themes/`,
|
||||
specificTheme: (themeName) => `${themesBase}themes/${themeName}/`,
|
||||
createTheme: `${themesBase}themes/create/`,
|
||||
updateTheme: (themeName) => `${themesBase}themes/${themeName}/update/`,
|
||||
deleteTheme: (themeName) => `${themesBase}themes/${themeName}/delete/`,
|
||||
};
|
||||
|
||||
export default {
|
||||
async requestAll() {
|
||||
let response = await apiReq.get(settingsURLs.allThemes);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async requestByName(name) {
|
||||
let response = await apiReq.get(settingsURLs.specificTheme(name));
|
||||
console.log(response);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async create(postBody) {
|
||||
let response = await apiReq.post(settingsURLs.createTheme, postBody);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async update(themeName, colors) {
|
||||
const body = {
|
||||
name: themeName,
|
||||
colors: colors,
|
||||
};
|
||||
let response = await apiReq.post(settingsURLs.updateTheme(themeName), body);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async delete(themeName) {
|
||||
let response = await apiReq.delete(settingsURLs.deleteTheme(themeName));
|
||||
return response.data;
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user