From 2770d81b5570a53b05b0fe03228eef9c139518d3 Mon Sep 17 00:00:00 2001 From: Kamil Kowalczyk Date: Tue, 12 Apr 2022 17:21:45 +0200 Subject: [PATCH 1/4] =?UTF-8?q?Pr=C3=B3ba=20usuwania=20pomiaru=20razem=20z?= =?UTF-8?q?=20plikami?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/editor/src/pages/MobileEdit.tsx | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/frontend/editor/src/pages/MobileEdit.tsx b/frontend/editor/src/pages/MobileEdit.tsx index 6bbd83e..0152d9a 100644 --- a/frontend/editor/src/pages/MobileEdit.tsx +++ b/frontend/editor/src/pages/MobileEdit.tsx @@ -2,7 +2,7 @@ import { useState, useEffect } from "react"; import { Autocomplete, Button, CircularProgress, TextField, Typography } from "@mui/material"; import { useSnackbar } from "notistack"; import { useParams } from "react-router-dom"; -import { CreateMeasurement, DataService, Measurement } from "../api"; +import { CreateMeasurement, DataService, FilesService, Measurement } from "../api"; import AlertDialogSlide from "../components/dialog"; import { tags } from "../interfaces/tags"; import { getImageLink } from "../utils/fileUtils"; @@ -60,6 +60,15 @@ export default function MobileEdit() { function deleteMeasurement() { + if(!measurement) { + return; + } + console.log(measurement); + for(const file of measurement.files) { + FilesService.deleteFileApiFilesDeleteIdDelete(file.file_id).catch(_ => { + enqueueSnackbar("we have some problem with deleting files", { variant: "error"}); + }); + } DataService.deleteMeasurementApiDataIdDelete(pathVariable.id).then(_ => { enqueueSnackbar("The measurement was deleted", { variant: "success", @@ -67,7 +76,7 @@ export default function MobileEdit() { window.history.pushState({}, "", "/editor/pc"); window.dispatchEvent(new PopStateEvent("popstate")); }).catch(_ => { - enqueueSnackbar("Ops! We have some error check your internet connection or login again", { + enqueueSnackbar("Please delete file first! Or check your internet connection or login again", { variant: "error", }); }); From 3151fbb02eb22c91da5ac8d69860a40b58bc2acd Mon Sep 17 00:00:00 2001 From: Kamil Kowalczyk Date: Fri, 15 Apr 2022 11:32:15 +0200 Subject: [PATCH 2/4] usuwanie pomiaru wraz z jego plikami --- frontend/editor/src/api/core/request.ts | 103 +++++++----------- frontend/editor/src/api/index.ts | 1 + .../editor/src/api/models/AdminPanelMsg.ts | 7 ++ .../editor/src/api/models/BearerResponse.ts | 2 +- ...auth_cookie_login_api_cookie_login_post.ts | 2 +- .../Body_auth_jwt_login_api_jwt_login_post.ts | 2 +- .../Body_upload_new_file_api_files__post.ts | 2 +- .../src/api/models/CreateMeasurement.ts | 2 +- .../editor/src/api/models/FileReference.ts | 2 +- .../src/api/models/HTTPValidationError.ts | 2 +- frontend/editor/src/api/models/Location.ts | 2 +- frontend/editor/src/api/models/Measurement.ts | 2 +- .../src/api/models/UpdateMeasurement.ts | 2 +- frontend/editor/src/api/models/User.ts | 2 +- frontend/editor/src/api/models/UserCreate.ts | 2 +- frontend/editor/src/api/models/UserUpdate.ts | 2 +- .../editor/src/api/models/ValidationError.ts | 2 +- frontend/editor/src/api/models/Weather.ts | 2 +- .../api/models/backend__errors__ErrorModel.ts | 2 +- ...stapi_users__router__common__ErrorModel.ts | 2 +- .../editor/src/api/services/AuthService.ts | 14 +-- .../editor/src/api/services/DataService.ts | 76 ++++++------- .../editor/src/api/services/FilesService.ts | 65 ++++++----- .../editor/src/api/services/LocalService.ts | 19 +++- .../editor/src/api/services/UsersService.ts | 30 ++--- frontend/editor/src/pages/Mobile.tsx | 3 + frontend/editor/src/pages/MobileEdit.tsx | 12 +- 27 files changed, 191 insertions(+), 173 deletions(-) create mode 100644 frontend/editor/src/api/models/AdminPanelMsg.ts diff --git a/frontend/editor/src/api/core/request.ts b/frontend/editor/src/api/core/request.ts index acbb231..46dbc34 100644 --- a/frontend/editor/src/api/core/request.ts +++ b/frontend/editor/src/api/core/request.ts @@ -1,6 +1,9 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ +import axios, { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios'; +import FormData from 'form-data'; + import { ApiError } from './ApiError'; import type { ApiRequestOptions } from './ApiRequestOptions'; import type { ApiResult } from './ApiResult'; @@ -33,8 +36,8 @@ const isBlob = (value: any): value is Blob => { ); }; -const isFormData = (value: any): value is FormData => { - return value instanceof FormData; +const isSuccess = (status: number): boolean => { + return status >= 200 && status < 300; }; const base64 = (str: string): string => { @@ -135,22 +138,24 @@ const resolve = async (options: ApiRequestOptions, resolver?: T | Resolver return resolver; }; -const getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions): Promise => { +const getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions, formData?: FormData): Promise> => { const token = await resolve(options, config.TOKEN); const username = await resolve(options, config.USERNAME); const password = await resolve(options, config.PASSWORD); const additionalHeaders = await resolve(options, config.HEADERS); + const formHeaders = typeof formData?.getHeaders === 'function' && formData?.getHeaders() || {} const headers = Object.entries({ Accept: 'application/json', ...additionalHeaders, ...options.headers, + ...formHeaders, }) - .filter(([_, value]) => isDefined(value)) - .reduce((headers, [key, value]) => ({ - ...headers, - [key]: String(value), - }), {} as Record); + .filter(([_, value]) => isDefined(value)) + .reduce((headers, [key, value]) => ({ + ...headers, + [key]: String(value), + }), {} as Record); if (isStringWithValue(token)) { headers['Authorization'] = `Bearer ${token}`; @@ -161,64 +166,52 @@ const getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions): Pr headers['Authorization'] = `Basic ${credentials}`; } - if (options.body) { - if (options.mediaType) { - headers['Content-Type'] = options.mediaType; - } else if (isBlob(options.body)) { - headers['Content-Type'] = options.body.type || 'application/octet-stream'; - } else if (isString(options.body)) { - headers['Content-Type'] = 'text/plain'; - } else if (!isFormData(options.body)) { - headers['Content-Type'] = 'application/json'; - } - } - - return new Headers(headers); + return headers; }; const getRequestBody = (options: ApiRequestOptions): any => { if (options.body) { - if (options.mediaType?.includes('/json')) { - return JSON.stringify(options.body) - } else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) { - return options.body; - } else { - return JSON.stringify(options.body); - } + return options.body; } return; }; -export const sendRequest = async ( +const sendRequest = async ( config: OpenAPIConfig, options: ApiRequestOptions, url: string, body: any, formData: FormData | undefined, - headers: Headers, + headers: Record, onCancel: OnCancel -): Promise => { - const controller = new AbortController(); +): Promise> => { + const source = axios.CancelToken.source(); - const request: RequestInit = { + const requestConfig: AxiosRequestConfig = { + url, headers, - body: body ?? formData, + data: body ?? formData, method: options.method, - signal: controller.signal, + withCredentials: config.WITH_CREDENTIALS, + cancelToken: source.token, }; - if (config.WITH_CREDENTIALS) { - request.credentials = config.CREDENTIALS; - } - - onCancel(() => controller.abort()); + onCancel(() => source.cancel('The user aborted a request.')); - return await fetch(url, request); + try { + return await axios.request(requestConfig); + } catch (error) { + const axiosError = error as AxiosError; + if (axiosError.response) { + return axiosError.response; + } + throw error; + } }; -const getResponseHeader = (response: Response, responseHeader?: string): string | undefined => { +const getResponseHeader = (response: AxiosResponse, responseHeader?: string): string | undefined => { if (responseHeader) { - const content = response.headers.get(responseHeader); + const content = response.headers[responseHeader]; if (isString(content)) { return content; } @@ -226,21 +219,9 @@ const getResponseHeader = (response: Response, responseHeader?: string): string return; }; -const getResponseBody = async (response: Response): Promise => { +const getResponseBody = (response: AxiosResponse): any => { if (response.status !== 204) { - try { - const contentType = response.headers.get('Content-Type'); - if (contentType) { - const isJSON = contentType.toLowerCase().startsWith('application/json'); - if (isJSON) { - return await response.json(); - } else { - return await response.text(); - } - } - } catch (error) { - console.error(error); - } + return response.data; } return; }; @@ -280,16 +261,16 @@ export const request = (config: OpenAPIConfig, options: ApiRequestOptions): C const url = getUrl(config, options); const formData = getFormData(options); const body = getRequestBody(options); - const headers = await getHeaders(config, options); + const headers = await getHeaders(config, options, formData); if (!onCancel.isCancelled) { - const response = await sendRequest(config, options, url, body, formData, headers, onCancel); - const responseBody = await getResponseBody(response); + const response = await sendRequest(config, options, url, body, formData, headers, onCancel); + const responseBody = getResponseBody(response); const responseHeader = getResponseHeader(response, options.responseHeader); const result: ApiResult = { url, - ok: response.ok, + ok: isSuccess(response.status), status: response.status, statusText: response.statusText, body: responseHeader ?? responseBody, diff --git a/frontend/editor/src/api/index.ts b/frontend/editor/src/api/index.ts index 4efa918..de55c9b 100644 --- a/frontend/editor/src/api/index.ts +++ b/frontend/editor/src/api/index.ts @@ -6,6 +6,7 @@ export { CancelablePromise, CancelError } from './core/CancelablePromise'; export { OpenAPI } from './core/OpenAPI'; export type { OpenAPIConfig } from './core/OpenAPI'; +export type { AdminPanelMsg } from './models/AdminPanelMsg'; export type { backend__errors__ErrorModel } from './models/backend__errors__ErrorModel'; export type { BearerResponse } from './models/BearerResponse'; export type { Body_auth_cookie_login_api_cookie_login_post } from './models/Body_auth_cookie_login_api_cookie_login_post'; diff --git a/frontend/editor/src/api/models/AdminPanelMsg.ts b/frontend/editor/src/api/models/AdminPanelMsg.ts new file mode 100644 index 0000000..7413703 --- /dev/null +++ b/frontend/editor/src/api/models/AdminPanelMsg.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type AdminPanelMsg = { + msg: string; +}; \ No newline at end of file diff --git a/frontend/editor/src/api/models/BearerResponse.ts b/frontend/editor/src/api/models/BearerResponse.ts index deeae35..9f42541 100644 --- a/frontend/editor/src/api/models/BearerResponse.ts +++ b/frontend/editor/src/api/models/BearerResponse.ts @@ -5,4 +5,4 @@ export type BearerResponse = { access_token: string; token_type: string; -}; +}; \ No newline at end of file diff --git a/frontend/editor/src/api/models/Body_auth_cookie_login_api_cookie_login_post.ts b/frontend/editor/src/api/models/Body_auth_cookie_login_api_cookie_login_post.ts index 897e0bc..b72a420 100644 --- a/frontend/editor/src/api/models/Body_auth_cookie_login_api_cookie_login_post.ts +++ b/frontend/editor/src/api/models/Body_auth_cookie_login_api_cookie_login_post.ts @@ -9,4 +9,4 @@ export type Body_auth_cookie_login_api_cookie_login_post = { scope?: string; client_id?: string; client_secret?: string; -}; +}; \ No newline at end of file diff --git a/frontend/editor/src/api/models/Body_auth_jwt_login_api_jwt_login_post.ts b/frontend/editor/src/api/models/Body_auth_jwt_login_api_jwt_login_post.ts index a25f016..02e66c3 100644 --- a/frontend/editor/src/api/models/Body_auth_jwt_login_api_jwt_login_post.ts +++ b/frontend/editor/src/api/models/Body_auth_jwt_login_api_jwt_login_post.ts @@ -9,4 +9,4 @@ export type Body_auth_jwt_login_api_jwt_login_post = { scope?: string; client_id?: string; client_secret?: string; -}; +}; \ No newline at end of file diff --git a/frontend/editor/src/api/models/Body_upload_new_file_api_files__post.ts b/frontend/editor/src/api/models/Body_upload_new_file_api_files__post.ts index f7eeddf..b9fb730 100644 --- a/frontend/editor/src/api/models/Body_upload_new_file_api_files__post.ts +++ b/frontend/editor/src/api/models/Body_upload_new_file_api_files__post.ts @@ -4,4 +4,4 @@ export type Body_upload_new_file_api_files__post = { uploaded_file: Blob; -}; +}; \ No newline at end of file diff --git a/frontend/editor/src/api/models/CreateMeasurement.ts b/frontend/editor/src/api/models/CreateMeasurement.ts index f7bcda7..bee8158 100644 --- a/frontend/editor/src/api/models/CreateMeasurement.ts +++ b/frontend/editor/src/api/models/CreateMeasurement.ts @@ -11,4 +11,4 @@ export type CreateMeasurement = { title: string; laeq: number; tags: Array; -}; +}; \ No newline at end of file diff --git a/frontend/editor/src/api/models/FileReference.ts b/frontend/editor/src/api/models/FileReference.ts index b50cf8b..07cdcad 100644 --- a/frontend/editor/src/api/models/FileReference.ts +++ b/frontend/editor/src/api/models/FileReference.ts @@ -10,4 +10,4 @@ export type FileReference = { measurement: number; owner: string; link: string; -}; +}; \ No newline at end of file diff --git a/frontend/editor/src/api/models/HTTPValidationError.ts b/frontend/editor/src/api/models/HTTPValidationError.ts index 9e23ddd..27aaab1 100644 --- a/frontend/editor/src/api/models/HTTPValidationError.ts +++ b/frontend/editor/src/api/models/HTTPValidationError.ts @@ -6,4 +6,4 @@ import type { ValidationError } from './ValidationError'; export type HTTPValidationError = { detail?: Array; -}; +}; \ No newline at end of file diff --git a/frontend/editor/src/api/models/Location.ts b/frontend/editor/src/api/models/Location.ts index 57bdfd5..0b815fe 100644 --- a/frontend/editor/src/api/models/Location.ts +++ b/frontend/editor/src/api/models/Location.ts @@ -6,4 +6,4 @@ export type Location = { latitude: number; longitude: number; time: string; -}; +}; \ No newline at end of file diff --git a/frontend/editor/src/api/models/Measurement.ts b/frontend/editor/src/api/models/Measurement.ts index ece510c..c49aec1 100644 --- a/frontend/editor/src/api/models/Measurement.ts +++ b/frontend/editor/src/api/models/Measurement.ts @@ -16,4 +16,4 @@ export type Measurement = { measurement_id: number; files: Array; weather?: Weather; -}; +}; \ No newline at end of file diff --git a/frontend/editor/src/api/models/UpdateMeasurement.ts b/frontend/editor/src/api/models/UpdateMeasurement.ts index 1e65d55..b5f496a 100644 --- a/frontend/editor/src/api/models/UpdateMeasurement.ts +++ b/frontend/editor/src/api/models/UpdateMeasurement.ts @@ -11,4 +11,4 @@ export type UpdateMeasurement = { title: string; laeq: number; tags: Array; -}; +}; \ No newline at end of file diff --git a/frontend/editor/src/api/models/User.ts b/frontend/editor/src/api/models/User.ts index 0bd5573..1bf5dae 100644 --- a/frontend/editor/src/api/models/User.ts +++ b/frontend/editor/src/api/models/User.ts @@ -11,4 +11,4 @@ export type User = { is_active?: boolean; is_superuser?: boolean; is_verified?: boolean; -}; +}; \ No newline at end of file diff --git a/frontend/editor/src/api/models/UserCreate.ts b/frontend/editor/src/api/models/UserCreate.ts index cde7c67..4d0d682 100644 --- a/frontend/editor/src/api/models/UserCreate.ts +++ b/frontend/editor/src/api/models/UserCreate.ts @@ -8,4 +8,4 @@ export type UserCreate = { is_active?: boolean; is_superuser?: boolean; is_verified?: boolean; -}; +}; \ No newline at end of file diff --git a/frontend/editor/src/api/models/UserUpdate.ts b/frontend/editor/src/api/models/UserUpdate.ts index dfecc78..fc796e8 100644 --- a/frontend/editor/src/api/models/UserUpdate.ts +++ b/frontend/editor/src/api/models/UserUpdate.ts @@ -8,4 +8,4 @@ export type UserUpdate = { is_active?: boolean; is_superuser?: boolean; is_verified?: boolean; -}; +}; \ No newline at end of file diff --git a/frontend/editor/src/api/models/ValidationError.ts b/frontend/editor/src/api/models/ValidationError.ts index d314b09..84d9adf 100644 --- a/frontend/editor/src/api/models/ValidationError.ts +++ b/frontend/editor/src/api/models/ValidationError.ts @@ -6,4 +6,4 @@ export type ValidationError = { loc: Array; msg: string; type: string; -}; +}; \ No newline at end of file diff --git a/frontend/editor/src/api/models/Weather.ts b/frontend/editor/src/api/models/Weather.ts index 45358cf..f35f2ad 100644 --- a/frontend/editor/src/api/models/Weather.ts +++ b/frontend/editor/src/api/models/Weather.ts @@ -8,4 +8,4 @@ export type Weather = { pressure: number; humidity: number; status: string; -}; +}; \ No newline at end of file diff --git a/frontend/editor/src/api/models/backend__errors__ErrorModel.ts b/frontend/editor/src/api/models/backend__errors__ErrorModel.ts index f4f1482..40a867d 100644 --- a/frontend/editor/src/api/models/backend__errors__ErrorModel.ts +++ b/frontend/editor/src/api/models/backend__errors__ErrorModel.ts @@ -4,4 +4,4 @@ export type backend__errors__ErrorModel = { detail: string; -}; +}; \ No newline at end of file diff --git a/frontend/editor/src/api/models/fastapi_users__router__common__ErrorModel.ts b/frontend/editor/src/api/models/fastapi_users__router__common__ErrorModel.ts index 77b3640..0217d79 100644 --- a/frontend/editor/src/api/models/fastapi_users__router__common__ErrorModel.ts +++ b/frontend/editor/src/api/models/fastapi_users__router__common__ErrorModel.ts @@ -4,4 +4,4 @@ export type fastapi_users__router__common__ErrorModel = { detail: (string | Record); -}; +}; \ No newline at end of file diff --git a/frontend/editor/src/api/services/AuthService.ts b/frontend/editor/src/api/services/AuthService.ts index dcd4d9a..e8ddca2 100644 --- a/frontend/editor/src/api/services/AuthService.ts +++ b/frontend/editor/src/api/services/AuthService.ts @@ -13,13 +13,13 @@ export class AuthService { /** * Auth:Cookie.Login - * @param formData + * @param formData * @returns any Successful Response * @throws ApiError */ public static authCookieLoginApiCookieLoginPost( - formData: Body_auth_cookie_login_api_cookie_login_post, - ): CancelablePromise { +formData: Body_auth_cookie_login_api_cookie_login_post, +): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/api/cookie/login', @@ -49,13 +49,13 @@ export class AuthService { /** * Auth:Jwt.Login - * @param formData + * @param formData * @returns BearerResponse Successful Response * @throws ApiError */ public static authJwtLoginApiJwtLoginPost( - formData: Body_auth_jwt_login_api_jwt_login_post, - ): CancelablePromise { +formData: Body_auth_jwt_login_api_jwt_login_post, +): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/api/jwt/login', @@ -85,7 +85,7 @@ export class AuthService { /** * Tea - * @returns void + * @returns void * @throws ApiError */ public static teaApiAuthGet(): CancelablePromise { diff --git a/frontend/editor/src/api/services/DataService.ts b/frontend/editor/src/api/services/DataService.ts index 21edc7d..d47bdc0 100644 --- a/frontend/editor/src/api/services/DataService.ts +++ b/frontend/editor/src/api/services/DataService.ts @@ -39,13 +39,13 @@ export class DataService { /** * Get One Measurement - * @param id + * @param id * @returns Measurement Successful Response * @throws ApiError */ public static getOneMeasurementApiDataIdGet( - id: number, - ): CancelablePromise { +id: number, +): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/api/data/{id}', @@ -59,42 +59,17 @@ export class DataService { }); } - /** - * Delete Measurement - * @param id - * @returns void - * @throws ApiError - */ - public static deleteMeasurementApiDataIdDelete( - id: number, - ): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/api/data/{id}', - path: { - 'id': id, - }, - errors: { - 403: `Forbidden`, - 404: `Not Found`, - 412: `Precondition Failed`, - 422: `Validation Error`, - 500: `Internal Server Error`, - }, - }); - } - /** * Edit Measurement - * @param id - * @param requestBody + * @param id + * @param requestBody * @returns Measurement Successful Response * @throws ApiError */ public static editMeasurementApiDataIdPatch( - id: number, - requestBody: UpdateMeasurement, - ): CancelablePromise { +id: number, +requestBody: UpdateMeasurement, +): CancelablePromise { return __request(OpenAPI, { method: 'PATCH', url: '/api/data/{id}', @@ -116,15 +91,15 @@ export class DataService { /** * Add Measurement * Create new Measurement. - * - * Tags must not contain `,` - * @param requestBody + * + * Tags must not contain `,` + * @param requestBody * @returns Measurement Successful Response * @throws ApiError */ public static addMeasurementApiDataCreatePost( - requestBody: CreateMeasurement, - ): CancelablePromise { +requestBody: CreateMeasurement, +): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/api/data/create', @@ -138,4 +113,29 @@ export class DataService { }); } + /** + * Delete Measurement + * @param id + * @returns void + * @throws ApiError + */ + public static deleteMeasurementApiDataDeleteIdGet( +id: number, +): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/api/data/delete/{id}', + path: { + 'id': id, + }, + errors: { + 403: `Forbidden`, + 404: `Not Found`, + 412: `Precondition Failed`, + 422: `Validation Error`, + 500: `Internal Server Error`, + }, + }); + } + } \ No newline at end of file diff --git a/frontend/editor/src/api/services/FilesService.ts b/frontend/editor/src/api/services/FilesService.ts index 7e0811e..4992dca 100644 --- a/frontend/editor/src/api/services/FilesService.ts +++ b/frontend/editor/src/api/services/FilesService.ts @@ -1,6 +1,7 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ +import type { AdminPanelMsg } from '../models/AdminPanelMsg'; import type { Body_upload_new_file_api_files__post } from '../models/Body_upload_new_file_api_files__post'; import type { FileReference } from '../models/FileReference'; @@ -25,15 +26,15 @@ export class FilesService { /** * Upload New File * Upload a file and associate it with a measurement. - * @param measurementId - * @param formData + * @param measurementId + * @param formData * @returns FileReference Successful Response * @throws ApiError */ public static uploadNewFileApiFilesPost( - measurementId: number, - formData: Body_upload_new_file_api_files__post, - ): CancelablePromise { +measurementId: number, +formData: Body_upload_new_file_api_files__post, +): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/api/files/', @@ -64,25 +65,25 @@ export class FilesService { /** * Return File * Returns file for a given id. - * - * File must have an associated measurement. - * - * - isDownload = False: if `True` then the file will be sent as - * an attachment - * - id: id of file to return - * - optimized = True: returns compressed version, if applicable. **MIME - * will most likely differ!** - * @param id - * @param isDownload - * @param optimized + * + * File must have an associated measurement. + * + * - isDownload = False: if `True` then the file will be sent as + * an attachment + * - id: id of file to return + * - optimized = True: returns compressed version, if applicable. **MIME + * will most likely differ!** + * @param id + * @param isDownload + * @param optimized * @returns any Successful Response * @throws ApiError */ public static returnFileApiFilesFileIdGet( - id: string, - isDownload: boolean = false, - optimized: boolean = true, - ): CancelablePromise { +id: string, +isDownload: boolean = false, +optimized: boolean = true, +): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/api/files/file/{id}', @@ -102,15 +103,15 @@ export class FilesService { /** * Delete File - * @param id - * @returns void + * @param id + * @returns void * @throws ApiError */ - public static deleteFileApiFilesDeleteIdDelete( - id: string, - ): CancelablePromise { + public static deleteFileApiFilesDeleteIdGet( +id: string, +): CancelablePromise { return __request(OpenAPI, { - method: 'DELETE', + method: 'GET', url: '/api/files/delete/{id}', path: { 'id': id, @@ -123,4 +124,16 @@ export class FilesService { }); } + /** + * Reoptimize All Files + * @returns AdminPanelMsg Successful Response + * @throws ApiError + */ + public static reoptimizeAllFilesLocalReoptimizeGet(): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/local/reoptimize', + }); + } + } \ No newline at end of file diff --git a/frontend/editor/src/api/services/LocalService.ts b/frontend/editor/src/api/services/LocalService.ts index 5faeb06..f5f1ff3 100644 --- a/frontend/editor/src/api/services/LocalService.ts +++ b/frontend/editor/src/api/services/LocalService.ts @@ -1,6 +1,7 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ +import type { AdminPanelMsg } from '../models/AdminPanelMsg'; import type { User } from '../models/User'; import type { UserCreate } from '../models/UserCreate'; @@ -12,13 +13,13 @@ export class LocalService { /** * Register:Register - * @param requestBody + * @param requestBody * @returns User Successful Response * @throws ApiError */ public static registerRegisterLocalRegisterPost( - requestBody: UserCreate, - ): CancelablePromise { +requestBody: UserCreate, +): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/local/register', @@ -31,4 +32,16 @@ export class LocalService { }); } + /** + * Reoptimize All Files + * @returns AdminPanelMsg Successful Response + * @throws ApiError + */ + public static reoptimizeAllFilesLocalReoptimizeGet(): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/local/reoptimize', + }); + } + } \ No newline at end of file diff --git a/frontend/editor/src/api/services/UsersService.ts b/frontend/editor/src/api/services/UsersService.ts index 4760129..3ee12b2 100644 --- a/frontend/editor/src/api/services/UsersService.ts +++ b/frontend/editor/src/api/services/UsersService.ts @@ -27,13 +27,13 @@ export class UsersService { /** * Users:Patch Current User - * @param requestBody + * @param requestBody * @returns User Successful Response * @throws ApiError */ public static usersPatchCurrentUserApiUsersMePatch( - requestBody: UserUpdate, - ): CancelablePromise { +requestBody: UserUpdate, +): CancelablePromise { return __request(OpenAPI, { method: 'PATCH', url: '/api/users/me', @@ -49,13 +49,13 @@ export class UsersService { /** * Users:User - * @param id + * @param id * @returns User Successful Response * @throws ApiError */ public static usersUserApiUsersIdGet( - id: string, - ): CancelablePromise { +id: string, +): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/api/users/{id}', @@ -73,13 +73,13 @@ export class UsersService { /** * Users:Delete User - * @param id - * @returns void + * @param id + * @returns void * @throws ApiError */ public static usersDeleteUserApiUsersIdDelete( - id: string, - ): CancelablePromise { +id: string, +): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', url: '/api/users/{id}', @@ -97,15 +97,15 @@ export class UsersService { /** * Users:Patch User - * @param id - * @param requestBody + * @param id + * @param requestBody * @returns User Successful Response * @throws ApiError */ public static usersPatchUserApiUsersIdPatch( - id: string, - requestBody: UserUpdate, - ): CancelablePromise { +id: string, +requestBody: UserUpdate, +): CancelablePromise { return __request(OpenAPI, { method: 'PATCH', url: '/api/users/{id}', diff --git a/frontend/editor/src/pages/Mobile.tsx b/frontend/editor/src/pages/Mobile.tsx index 096ccb8..6c4dcb3 100644 --- a/frontend/editor/src/pages/Mobile.tsx +++ b/frontend/editor/src/pages/Mobile.tsx @@ -43,6 +43,7 @@ export default function Mobile() { enqueueSnackbar("The measurement was added", { variant: "success", }); + if(e.target.elements.file.files[0]){ let body = { uploaded_file: e.target.elements.file.files[0], } @@ -55,6 +56,8 @@ export default function Mobile() { variant: "error", }); }); + + // window.open(`https://www.google.com/search?q=${latitude} ${longitude}`, '_blank'); // for google search window.open(`https://www.google.com/maps/place/${latitude} ${longitude}`, "_blank"); // for google maps setPreviousId(res.measurement_id); diff --git a/frontend/editor/src/pages/MobileEdit.tsx b/frontend/editor/src/pages/MobileEdit.tsx index 0152d9a..a6fa9aa 100644 --- a/frontend/editor/src/pages/MobileEdit.tsx +++ b/frontend/editor/src/pages/MobileEdit.tsx @@ -31,11 +31,11 @@ export default function MobileEdit() { time: String(measurement?.location.time) } }; - DataService.editMeasurementApiDataIdPatch(pathVariable.id, measurementBody).then(_ => { + DataService.editMeasurementApiDataIdPatch(pathVariable.id, measurementBody).then((_:any) => { enqueueSnackbar("The measurement was edited", { variant: "success", }); - }).catch(_ => { + }).catch((_:any) => { enqueueSnackbar("Ops! We have some error with measurement edit check your internet connection or login again", { variant: "error", }); @@ -59,23 +59,23 @@ export default function MobileEdit() { }, [pathVariable.id]); - function deleteMeasurement() { + async function deleteMeasurement() { if(!measurement) { return; } console.log(measurement); for(const file of measurement.files) { - FilesService.deleteFileApiFilesDeleteIdDelete(file.file_id).catch(_ => { + await FilesService.deleteFileApiFilesDeleteIdGet(file.file_id).catch((_:any) => { enqueueSnackbar("we have some problem with deleting files", { variant: "error"}); }); } - DataService.deleteMeasurementApiDataIdDelete(pathVariable.id).then(_ => { + DataService.deleteMeasurementApiDataDeleteIdGet(pathVariable.id).then((_:any) => { enqueueSnackbar("The measurement was deleted", { variant: "success", }); window.history.pushState({}, "", "/editor/pc"); window.dispatchEvent(new PopStateEvent("popstate")); - }).catch(_ => { + }).catch((_:any) => { enqueueSnackbar("Please delete file first! Or check your internet connection or login again", { variant: "error", }); From ed2d91b129c50ab5413814b78f6712b897a8ca8d Mon Sep 17 00:00:00 2001 From: Kamil Kowalczyk Date: Fri, 15 Apr 2022 11:32:36 +0200 Subject: [PATCH 3/4] =?UTF-8?q?dodanie=20dok=C5=82adniejszych=20pomiar?= =?UTF-8?q?=C3=B3w=20lokalizacji?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/editor/src/pages/Mobile.tsx | 50 ++++++++++++++++------------ 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/frontend/editor/src/pages/Mobile.tsx b/frontend/editor/src/pages/Mobile.tsx index 6c4dcb3..b19953e 100644 --- a/frontend/editor/src/pages/Mobile.tsx +++ b/frontend/editor/src/pages/Mobile.tsx @@ -14,6 +14,8 @@ export default function Mobile() { document.querySelector(".image-input")?.classList.add("green"); } + + function handleSubmit(e: any) { e.preventDefault(); if (!e.target.elements.title.value) { @@ -21,7 +23,15 @@ export default function Mobile() { return; } - navigator.geolocation.getCurrentPosition((position) => { + navigator.geolocation.getCurrentPosition(success, error, {enableHighAccuracy: true }); + + function error(error: any) { + enqueueSnackbar("Ops! We have some error with measurement upload check your internet connection or login again", { + variant: "error", + }); + } + + function success(position: GeolocationPosition) { let latitude = position.coords.latitude; let longitude = position.coords.longitude; if (latitude && longitude && window) { @@ -44,31 +54,27 @@ export default function Mobile() { variant: "success", }); if(e.target.elements.file.files[0]){ - let body = { - uploaded_file: e.target.elements.file.files[0], - } - FilesService.uploadNewFileApiFilesPost(res.measurement_id, body).then(() => { - enqueueSnackbar("The file was added", { - variant: "success", - }); - }).catch(() => { - enqueueSnackbar(`Ops! We have some error with file upload check your internet connection or login again`, { - variant: "error", + let body = { + uploaded_file: e.target.elements.file.files[0], + } + FilesService.uploadNewFileApiFilesPost(res.measurement_id, body).then(() => { + enqueueSnackbar("The file was added", { + variant: "success", + }); + }).catch(() => { + enqueueSnackbar(`Ops! We have some error with file upload check your internet connection or login again`, { + variant: "error", + }); }); - }); - - - // window.open(`https://www.google.com/search?q=${latitude} ${longitude}`, '_blank'); // for google search - window.open(`https://www.google.com/maps/place/${latitude} ${longitude}`, "_blank"); // for google maps - setPreviousId(res.measurement_id); - }).catch(() => { - enqueueSnackbar("Ops! We have some error with measurement upload check your internet connection or login again", { - variant: "error", - }); + // window.open(`https://www.google.com/search?q=${latitude} ${longitude}`, '_blank'); // for google search + window.open(`https://www.google.com/maps/place/${latitude} ${longitude}`, "_blank"); // for google maps + setPreviousId(res.measurement_id); + } }); } - }); + } } + function report() { window.history.pushState({}, "", `/editor/mobile_edit/${previousId}`); From ff84c0a0ae0581d3c49f012da9fbb432884cbcf7 Mon Sep 17 00:00:00 2001 From: Kamil Kowalczyk Date: Fri, 15 Apr 2022 15:28:38 +0200 Subject: [PATCH 4/4] =?UTF-8?q?naprawa=20b=C5=82ed=C3=B3w=20lintowych?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/editor/src/pages/Mobile.tsx | 2 +- frontend/editor/src/pages/MobileEdit.tsx | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/frontend/editor/src/pages/Mobile.tsx b/frontend/editor/src/pages/Mobile.tsx index b19953e..a93c712 100644 --- a/frontend/editor/src/pages/Mobile.tsx +++ b/frontend/editor/src/pages/Mobile.tsx @@ -25,7 +25,7 @@ export default function Mobile() { navigator.geolocation.getCurrentPosition(success, error, {enableHighAccuracy: true }); - function error(error: any) { + function error(_error: any) { enqueueSnackbar("Ops! We have some error with measurement upload check your internet connection or login again", { variant: "error", }); diff --git a/frontend/editor/src/pages/MobileEdit.tsx b/frontend/editor/src/pages/MobileEdit.tsx index a6fa9aa..3a05e48 100644 --- a/frontend/editor/src/pages/MobileEdit.tsx +++ b/frontend/editor/src/pages/MobileEdit.tsx @@ -63,7 +63,6 @@ export default function MobileEdit() { if(!measurement) { return; } - console.log(measurement); for(const file of measurement.files) { await FilesService.deleteFileApiFilesDeleteIdGet(file.file_id).catch((_:any) => { enqueueSnackbar("we have some problem with deleting files", { variant: "error"});