Split model files into apis, hooks and models
This commit is contained in:
Generated
+3
-69
@@ -15,7 +15,6 @@
|
|||||||
"lodash": "4.17.21",
|
"lodash": "4.17.21",
|
||||||
"next": "10.0.7",
|
"next": "10.0.7",
|
||||||
"normalize.css": "8.0.1",
|
"normalize.css": "8.0.1",
|
||||||
"query-string": "6.14.1",
|
|
||||||
"react": "17.0.1",
|
"react": "17.0.1",
|
||||||
"react-beautiful-dnd": "13.0.0",
|
"react-beautiful-dnd": "13.0.0",
|
||||||
"react-csv": "2.0.3",
|
"react-csv": "2.0.3",
|
||||||
@@ -5591,6 +5590,7 @@
|
|||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
|
||||||
"integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
|
"integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10"
|
"node": ">=0.10"
|
||||||
}
|
}
|
||||||
@@ -7217,14 +7217,6 @@
|
|||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/filter-obj": {
|
|
||||||
"version": "1.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz",
|
|
||||||
"integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.10.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/find-babel-config": {
|
"node_modules/find-babel-config": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz",
|
||||||
@@ -11192,23 +11184,6 @@
|
|||||||
"qrcode-terminal": "bin/qrcode-terminal.js"
|
"qrcode-terminal": "bin/qrcode-terminal.js"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/query-string": {
|
|
||||||
"version": "6.14.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz",
|
|
||||||
"integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==",
|
|
||||||
"dependencies": {
|
|
||||||
"decode-uri-component": "^0.2.0",
|
|
||||||
"filter-obj": "^1.1.0",
|
|
||||||
"split-on-first": "^1.0.0",
|
|
||||||
"strict-uri-encode": "^2.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/querystring": {
|
"node_modules/querystring": {
|
||||||
"version": "0.2.1",
|
"version": "0.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz",
|
||||||
@@ -12645,14 +12620,6 @@
|
|||||||
"specificity": "bin/specificity"
|
"specificity": "bin/specificity"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/split-on-first": {
|
|
||||||
"version": "1.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz",
|
|
||||||
"integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/split-string": {
|
"node_modules/split-string": {
|
||||||
"version": "3.1.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
|
||||||
@@ -12760,14 +12727,6 @@
|
|||||||
"xtend": "^4.0.0"
|
"xtend": "^4.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/strict-uri-encode": {
|
|
||||||
"version": "2.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
|
|
||||||
"integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/string_decoder": {
|
"node_modules/string_decoder": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
||||||
@@ -20892,7 +20851,8 @@
|
|||||||
"decode-uri-component": {
|
"decode-uri-component": {
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
|
||||||
"integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU="
|
"integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"decompress-response": {
|
"decompress-response": {
|
||||||
"version": "4.2.1",
|
"version": "4.2.1",
|
||||||
@@ -22233,11 +22193,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"filter-obj": {
|
|
||||||
"version": "1.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz",
|
|
||||||
"integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs="
|
|
||||||
},
|
|
||||||
"find-babel-config": {
|
"find-babel-config": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz",
|
||||||
@@ -25503,17 +25458,6 @@
|
|||||||
"integrity": "sha1-p2pI4mEKGPl/o6K9UytoKs/4bFM=",
|
"integrity": "sha1-p2pI4mEKGPl/o6K9UytoKs/4bFM=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"query-string": {
|
|
||||||
"version": "6.14.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz",
|
|
||||||
"integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==",
|
|
||||||
"requires": {
|
|
||||||
"decode-uri-component": "^0.2.0",
|
|
||||||
"filter-obj": "^1.1.0",
|
|
||||||
"split-on-first": "^1.0.0",
|
|
||||||
"strict-uri-encode": "^2.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"querystring": {
|
"querystring": {
|
||||||
"version": "0.2.1",
|
"version": "0.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz",
|
||||||
@@ -26751,11 +26695,6 @@
|
|||||||
"integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==",
|
"integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"split-on-first": {
|
|
||||||
"version": "1.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz",
|
|
||||||
"integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw=="
|
|
||||||
},
|
|
||||||
"split-string": {
|
"split-string": {
|
||||||
"version": "3.1.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
|
||||||
@@ -26849,11 +26788,6 @@
|
|||||||
"xtend": "^4.0.0"
|
"xtend": "^4.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"strict-uri-encode": {
|
|
||||||
"version": "2.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
|
|
||||||
"integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY="
|
|
||||||
},
|
|
||||||
"string_decoder": {
|
"string_decoder": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
||||||
|
|||||||
@@ -69,7 +69,6 @@
|
|||||||
"lodash": "4.17.21",
|
"lodash": "4.17.21",
|
||||||
"next": "10.0.7",
|
"next": "10.0.7",
|
||||||
"normalize.css": "8.0.1",
|
"normalize.css": "8.0.1",
|
||||||
"query-string": "6.14.1",
|
|
||||||
"react": "17.0.1",
|
"react": "17.0.1",
|
||||||
"react-beautiful-dnd": "13.0.0",
|
"react-beautiful-dnd": "13.0.0",
|
||||||
"react-csv": "2.0.3",
|
"react-csv": "2.0.3",
|
||||||
|
|||||||
@@ -0,0 +1,90 @@
|
|||||||
|
import axios from "axios";
|
||||||
|
import Event from "@models/Event";
|
||||||
|
import { getAuthHeader } from "@utils/auth";
|
||||||
|
|
||||||
|
export const URL = `${process.env.NEXT_PUBLIC_API_URL}/events/`;
|
||||||
|
|
||||||
|
export interface Options {
|
||||||
|
onlyNonPast?: boolean;
|
||||||
|
limit?: number;
|
||||||
|
auth?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
class EventApi {
|
||||||
|
static async getEvent(id: number, auth = false): Promise<Event> {
|
||||||
|
try {
|
||||||
|
const headers = auth ? { Authorization: getAuthHeader() } : null;
|
||||||
|
const resp = await axios.get(`${URL}${id}/`, {
|
||||||
|
headers,
|
||||||
|
});
|
||||||
|
return resp.data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async getEvents(options: Options = {}): Promise<Event[]> {
|
||||||
|
const { onlyNonPast, limit, auth } = options;
|
||||||
|
try {
|
||||||
|
const params = {
|
||||||
|
since: onlyNonPast ? (new Date()).toISOString() : undefined,
|
||||||
|
limit,
|
||||||
|
};
|
||||||
|
const headers = auth ? { Authorization: getAuthHeader() } : null;
|
||||||
|
const resp = await axios.get(`${URL}`, {
|
||||||
|
headers,
|
||||||
|
params,
|
||||||
|
});
|
||||||
|
return resp.data.results;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async createEvent(data: any): Promise<Event> {
|
||||||
|
try {
|
||||||
|
const resp = await axios.post(URL, data, {
|
||||||
|
headers: {
|
||||||
|
Authorization: getAuthHeader(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return resp.data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async updateEvent(data: any): Promise<Event> {
|
||||||
|
try {
|
||||||
|
const putUrl = `${URL}${data.id}/`;
|
||||||
|
const resp = await axios.put(putUrl, data, {
|
||||||
|
headers: {
|
||||||
|
Authorization: getAuthHeader(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return resp.data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async deleteEvent(id: number) {
|
||||||
|
try {
|
||||||
|
const resp = await axios.delete(`${URL}${id}`, {
|
||||||
|
headers: {
|
||||||
|
Authorization: getAuthHeader(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return resp.data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default EventApi;
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
import axios from "axios";
|
||||||
|
import Post from "@models/Feed";
|
||||||
|
import { getAuthHeader } from "@utils/auth";
|
||||||
|
|
||||||
|
export const URL = `${process.env.NEXT_PUBLIC_API_URL}/feed/`;
|
||||||
|
|
||||||
|
export interface Options {
|
||||||
|
auth?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
class FeedApi {
|
||||||
|
static async getFeed(options: Options = {}): Promise<Post[]> {
|
||||||
|
const { auth } = options;
|
||||||
|
const headers = auth ? { Authorization: getAuthHeader() } : null;
|
||||||
|
try {
|
||||||
|
const resp = await axios.get(URL, { headers });
|
||||||
|
return resp.data.results;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async getPost(id: number, options: Options = {}): Promise<Post> {
|
||||||
|
const { auth } = options;
|
||||||
|
const headers = auth ? { Authorization: getAuthHeader() } : null;
|
||||||
|
try {
|
||||||
|
const resp = await axios.get(`${URL}${id}/`, { headers });
|
||||||
|
return resp.data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async createPost(data): Promise<Post> {
|
||||||
|
try {
|
||||||
|
const resp = await axios.post(URL, data, {
|
||||||
|
headers: {
|
||||||
|
Authorization: getAuthHeader(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return resp.data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async updatePost(data): Promise<Post> {
|
||||||
|
try {
|
||||||
|
const putUrl = `${URL}${data.id}/`;
|
||||||
|
const resp = await axios.put(putUrl, data, {
|
||||||
|
headers: {
|
||||||
|
Authorization: getAuthHeader(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return resp.data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default FeedApi;
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
import axios from "axios";
|
||||||
|
import JobAd from "@models/JobAd";
|
||||||
|
import { getAuthHeader } from "@utils/auth";
|
||||||
|
|
||||||
|
export const URL = `${process.env.NEXT_PUBLIC_API_URL}/jobads/`;
|
||||||
|
|
||||||
|
export interface Options {
|
||||||
|
onlyNonPast?: boolean;
|
||||||
|
limit?: number;
|
||||||
|
auth?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
class JobAdApi {
|
||||||
|
static async getJobAds(options: Options = {}): Promise<JobAd[]> {
|
||||||
|
const { onlyNonPast, limit, auth } = options;
|
||||||
|
try {
|
||||||
|
const params = {
|
||||||
|
since: onlyNonPast ? (new Date()).toISOString() : undefined,
|
||||||
|
limit,
|
||||||
|
};
|
||||||
|
const headers = auth ? { Authorization: getAuthHeader() } : null;
|
||||||
|
const resp = await axios.get(`${URL}`, {
|
||||||
|
headers,
|
||||||
|
params,
|
||||||
|
});
|
||||||
|
return resp.data.results;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async getJobAd(id: number, auth = false): Promise<JobAd> {
|
||||||
|
try {
|
||||||
|
const headers = auth ? { Authorization: getAuthHeader() } : null;
|
||||||
|
const resp = await axios.get(`${URL}${id}/`, {
|
||||||
|
headers,
|
||||||
|
});
|
||||||
|
return resp.data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async createJobAd(data: any): Promise<JobAd> {
|
||||||
|
try {
|
||||||
|
const resp = await axios.post(URL, data, {
|
||||||
|
headers: {
|
||||||
|
Authorization: getAuthHeader(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return resp.data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async updateJobAd(data: any): Promise<JobAd> {
|
||||||
|
try {
|
||||||
|
const putUrl = `${URL}${data.id}/`;
|
||||||
|
const resp = await axios.put(putUrl, data, {
|
||||||
|
headers: {
|
||||||
|
Authorization: getAuthHeader(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return resp.data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default JobAdApi;
|
||||||
@@ -0,0 +1,180 @@
|
|||||||
|
import axios from "axios";
|
||||||
|
import { Signup, SignupForm } from "@models/Signup";
|
||||||
|
import { getAuthHeader } from "@utils/auth";
|
||||||
|
|
||||||
|
export const URL = `${process.env.NEXT_PUBLIC_API_URL}/signup/`;
|
||||||
|
export const FORM_URL = `${process.env.NEXT_PUBLIC_API_URL}/signupForm/`;
|
||||||
|
|
||||||
|
export interface Options {
|
||||||
|
onlyNonPast?: boolean;
|
||||||
|
limit?: number;
|
||||||
|
auth?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
class SignupApi {
|
||||||
|
static async getSignup(id: number): Promise<Signup> {
|
||||||
|
try {
|
||||||
|
const resp = await axios.get(`${URL}${id}`, {
|
||||||
|
headers: {
|
||||||
|
Authorization: getAuthHeader(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return resp.data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async createSignup(data: Signup): Promise<Signup> {
|
||||||
|
try {
|
||||||
|
const resp = await axios.post(URL, data);
|
||||||
|
return resp.data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async updateSignup(data: Signup, uuid: string): Promise<Signup> {
|
||||||
|
try {
|
||||||
|
const { id } = data;
|
||||||
|
if (!id) throw new Error("SignupId required!");
|
||||||
|
const resp = await axios.put(`${URL}${id}/edit/`, data, {
|
||||||
|
params: { uuid },
|
||||||
|
});
|
||||||
|
return resp.data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async getSignupUUID(id: number, uuid: string): Promise<Signup> {
|
||||||
|
try {
|
||||||
|
const resp = await axios.get(`${URL}${id}/edit/`, {
|
||||||
|
params: {
|
||||||
|
uuid,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return resp.data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async deleteSignup(id: number) {
|
||||||
|
try {
|
||||||
|
const resp = await axios.delete(`${URL}${id}`, {
|
||||||
|
headers: {
|
||||||
|
Authorization: getAuthHeader(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return resp.data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async getForms(auth = false): Promise<SignupForm[]> {
|
||||||
|
try {
|
||||||
|
const headers = auth ? { Authorization: getAuthHeader() } : null;
|
||||||
|
const resp = await axios.get(FORM_URL, {
|
||||||
|
headers,
|
||||||
|
});
|
||||||
|
const { results } = resp.data;
|
||||||
|
return results;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async getForm(id: number, auth = false): Promise<SignupForm> {
|
||||||
|
try {
|
||||||
|
const headers = auth ? { Authorization: getAuthHeader() } : null;
|
||||||
|
const resp = await axios.get(`${FORM_URL}${id}/`, {
|
||||||
|
headers,
|
||||||
|
});
|
||||||
|
return resp.data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async createForm(data): Promise<SignupForm> {
|
||||||
|
try {
|
||||||
|
const resp = await axios.post(FORM_URL, data, {
|
||||||
|
headers: {
|
||||||
|
Authorization: getAuthHeader(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return resp.data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async updateForm(data): Promise<SignupForm> {
|
||||||
|
try {
|
||||||
|
const putUrl = `${FORM_URL}${data.id}/`;
|
||||||
|
const resp = await axios.put(putUrl, data, {
|
||||||
|
headers: {
|
||||||
|
Authorization: getAuthHeader(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return resp.data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async deleteForm(id: number) {
|
||||||
|
try {
|
||||||
|
const resp = await axios.delete(`${FORM_URL}${id}`, {
|
||||||
|
headers: {
|
||||||
|
Authorization: getAuthHeader(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return resp.data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async signupFormSendEmail(data, id): Promise<any> {
|
||||||
|
try {
|
||||||
|
const resp = await axios.post(`${FORM_URL}${id}/sendemail/`, data, {
|
||||||
|
headers: {
|
||||||
|
Authorization: getAuthHeader(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return resp.data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async getSignups(id): Promise<Signup[]> {
|
||||||
|
try {
|
||||||
|
const resp = await axios.get(`${FORM_URL}${id}/signups/`, {
|
||||||
|
headers: {
|
||||||
|
Authorization: getAuthHeader(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return resp.data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default SignupApi;
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
import axios from "axios";
|
||||||
|
import Tag from "@models/Tag";
|
||||||
|
|
||||||
|
export const URL = `${process.env.NEXT_PUBLIC_API_URL}/tags/`;
|
||||||
|
|
||||||
|
export interface Options {
|
||||||
|
onlyNonPast?: boolean;
|
||||||
|
limit?: number;
|
||||||
|
auth?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
class TagApi {
|
||||||
|
static async getTags(): Promise<Tag[]> {
|
||||||
|
try {
|
||||||
|
const resp = await axios.get(URL);
|
||||||
|
return resp.data.results;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default TagApi;
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
import useSWR from "swr";
|
||||||
|
import axios, { AxiosRequestConfig } from "axios";
|
||||||
|
import Event from "@models/Event";
|
||||||
|
import { getAuthHeader } from "@utils/auth";
|
||||||
|
import { URL, Options } from "@api/eventApi";
|
||||||
|
|
||||||
|
const fetcher = (url: string, config: AxiosRequestConfig) => axios.get(url, config).then((res) => res.data);
|
||||||
|
|
||||||
|
const generateFetchParams = (id = "", options: Options = {}) => {
|
||||||
|
const url = `${URL}${id}`;
|
||||||
|
const { auth, onlyNonPast, limit } = options;
|
||||||
|
|
||||||
|
return {
|
||||||
|
url,
|
||||||
|
config: {
|
||||||
|
params: {
|
||||||
|
since: onlyNonPast ? (new Date()).toISOString() : undefined,
|
||||||
|
limit,
|
||||||
|
},
|
||||||
|
headers: auth ? { Authorization: getAuthHeader() } : null,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
interface FetchArguments {
|
||||||
|
initialData?: Event | Event[],
|
||||||
|
id?: string;
|
||||||
|
options?: Options
|
||||||
|
}
|
||||||
|
|
||||||
|
const useFetchEvents = ({
|
||||||
|
initialData,
|
||||||
|
id = "",
|
||||||
|
options = {},
|
||||||
|
}: FetchArguments) => {
|
||||||
|
const { url, config } = generateFetchParams(id, options);
|
||||||
|
const { data, error } = useSWR([url, config], fetcher, { initialData });
|
||||||
|
return {
|
||||||
|
data: data?.results || data,
|
||||||
|
error,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export default useFetchEvents;
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
import useSWR from "swr";
|
||||||
|
import axios, { AxiosRequestConfig } from "axios";
|
||||||
|
import Post from "@models/Feed";
|
||||||
|
import { getAuthHeader } from "@utils/auth";
|
||||||
|
import { URL, Options } from "@api/feedApi";
|
||||||
|
|
||||||
|
const feedFetcher = (url: string, config?: AxiosRequestConfig) => axios.get(url, config).then((res) => res.data);
|
||||||
|
|
||||||
|
const generateFetchParams = (id = "", options: Options = {}) => {
|
||||||
|
const url = `${URL}${id}`;
|
||||||
|
const { auth } = options;
|
||||||
|
|
||||||
|
return {
|
||||||
|
url,
|
||||||
|
config: {
|
||||||
|
headers: auth ? { Authorization: getAuthHeader() } : null,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
interface FetchArguments {
|
||||||
|
initialData?: Post | Post[],
|
||||||
|
id?: string;
|
||||||
|
options?: Options
|
||||||
|
}
|
||||||
|
|
||||||
|
const useFetchFeed = ({
|
||||||
|
initialData,
|
||||||
|
id = "",
|
||||||
|
options = {},
|
||||||
|
}: FetchArguments) => {
|
||||||
|
const { url, config } = generateFetchParams(id, options);
|
||||||
|
const { data, error } = useSWR([url, config], feedFetcher, { initialData });
|
||||||
|
return {
|
||||||
|
data: data?.results || data,
|
||||||
|
error,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export default useFetchFeed;
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
import axios, { AxiosRequestConfig } from "axios";
|
||||||
|
import useSWR from "swr";
|
||||||
|
import JobAd from "@models/JobAd";
|
||||||
|
import { getAuthHeader } from "@utils/auth";
|
||||||
|
import { URL, Options } from "@api/jobAdApi";
|
||||||
|
|
||||||
|
const jobAdFetcher = (url: string, config?: AxiosRequestConfig) => axios.get(url, config).then((res) => res.data);
|
||||||
|
|
||||||
|
const generateFetchParams = (id = "", options: Options = {}) => {
|
||||||
|
const url = `${URL}${id}`;
|
||||||
|
const { auth } = options;
|
||||||
|
|
||||||
|
return {
|
||||||
|
url,
|
||||||
|
config: {
|
||||||
|
headers: auth ? { Authorization: getAuthHeader() } : null,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
interface FetchArguments {
|
||||||
|
initialData?: JobAd | JobAd[],
|
||||||
|
id?: string;
|
||||||
|
options?: Options;
|
||||||
|
}
|
||||||
|
|
||||||
|
const useFetchJobAds = ({
|
||||||
|
initialData,
|
||||||
|
id = "",
|
||||||
|
options = {},
|
||||||
|
}: FetchArguments) => {
|
||||||
|
const { url, config } = generateFetchParams(id, options);
|
||||||
|
const { data, error } = useSWR([url, config], jobAdFetcher, { initialData });
|
||||||
|
return {
|
||||||
|
data: data?.results || data,
|
||||||
|
error,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export default useFetchJobAds;
|
||||||
+4
-126
@@ -1,13 +1,7 @@
|
|||||||
import axios, { AxiosRequestConfig } from "axios";
|
import Tag from "./Tag";
|
||||||
import useSWR from "swr";
|
import { SignupForm } from "./Signup";
|
||||||
import qs from "query-string";
|
|
||||||
import { getAuthHeader } from "@utils/auth";
|
|
||||||
import { Tag } from "./Tag";
|
|
||||||
import { SignupForm } from "./SignupForm";
|
|
||||||
|
|
||||||
const URL = `${process.env.NEXT_PUBLIC_API_URL}/events/`;
|
interface Event {
|
||||||
|
|
||||||
export interface Event {
|
|
||||||
id: number;
|
id: number;
|
||||||
title_fi: string;
|
title_fi: string;
|
||||||
title_en: string;
|
title_en: string;
|
||||||
@@ -25,120 +19,4 @@ export interface Event {
|
|||||||
signupForm: SignupForm[];
|
signupForm: SignupForm[];
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Options {
|
export default Event;
|
||||||
onlyNonPast?: boolean;
|
|
||||||
limit?: number;
|
|
||||||
auth?: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function getEvents(options: Options = {}): Promise<Event[]> {
|
|
||||||
const { onlyNonPast, limit, auth } = options;
|
|
||||||
try {
|
|
||||||
const params = {
|
|
||||||
since: onlyNonPast ? (new Date()).toISOString() : undefined,
|
|
||||||
limit,
|
|
||||||
};
|
|
||||||
const search = qs.stringify(params);
|
|
||||||
const headers = auth ? { Authorization: getAuthHeader() } : null;
|
|
||||||
const resp = await axios.get(`${URL}?${search}`, {
|
|
||||||
headers,
|
|
||||||
});
|
|
||||||
return resp.data.results;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function getEvent(id: number, auth = false): Promise<Event> {
|
|
||||||
try {
|
|
||||||
const headers = auth ? { Authorization: getAuthHeader() } : null;
|
|
||||||
const resp = await axios.get(`${URL}${id}/`, {
|
|
||||||
headers,
|
|
||||||
});
|
|
||||||
return resp.data;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function createEvent(data): Promise<Event> {
|
|
||||||
try {
|
|
||||||
const resp = await axios.post(URL, data, {
|
|
||||||
headers: {
|
|
||||||
Authorization: getAuthHeader(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
return resp.data;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function updateEvent(data): Promise<Event> {
|
|
||||||
try {
|
|
||||||
const putUrl = `${URL}${data.id}/`;
|
|
||||||
const resp = await axios.put(putUrl, data, {
|
|
||||||
headers: {
|
|
||||||
Authorization: getAuthHeader(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
return resp.data;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function deleteEvent(id: number) {
|
|
||||||
try {
|
|
||||||
const resp = await axios.delete(`${URL}${id}`, {
|
|
||||||
headers: {
|
|
||||||
Authorization: getAuthHeader(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
return resp.data;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export const eventFetcher = (url: string, config?: AxiosRequestConfig) => axios.get(url, config).then((res) => res.data);
|
|
||||||
|
|
||||||
export const generateFetchParams = (id = "", options: Options = {}) => {
|
|
||||||
const url = `${URL}${id}`;
|
|
||||||
const { auth, onlyNonPast, limit } = options;
|
|
||||||
|
|
||||||
return {
|
|
||||||
url,
|
|
||||||
config: {
|
|
||||||
params: {
|
|
||||||
since: onlyNonPast ? (new Date()).toISOString() : undefined,
|
|
||||||
limit,
|
|
||||||
},
|
|
||||||
headers: auth ? { Authorization: getAuthHeader() } : null,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
interface FetchArguments {
|
|
||||||
initialData?: Event | Event[],
|
|
||||||
id?: string;
|
|
||||||
options?: Options
|
|
||||||
}
|
|
||||||
|
|
||||||
export const useFetchEvents = ({
|
|
||||||
initialData,
|
|
||||||
id = "",
|
|
||||||
options = {},
|
|
||||||
}: FetchArguments) => {
|
|
||||||
const { url, config } = generateFetchParams(id, options);
|
|
||||||
const { data, error } = useSWR([url, config], eventFetcher, { initialData });
|
|
||||||
return {
|
|
||||||
data: data?.results || data,
|
|
||||||
error,
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|||||||
+3
-96
@@ -1,11 +1,6 @@
|
|||||||
import axios, { AxiosRequestConfig } from "axios";
|
import Tag from "./Tag";
|
||||||
import useSWR from "swr";
|
|
||||||
import { getAuthHeader } from "@utils/auth";
|
|
||||||
import { Tag } from "./Tag";
|
|
||||||
|
|
||||||
const URL = `${process.env.NEXT_PUBLIC_API_URL}/feed/`;
|
interface Post {
|
||||||
|
|
||||||
export interface Post {
|
|
||||||
id: number;
|
id: number;
|
||||||
tags: Tag[];
|
tags: Tag[];
|
||||||
visible: boolean;
|
visible: boolean;
|
||||||
@@ -21,92 +16,4 @@ export interface Post {
|
|||||||
autohide_enabled: boolean;
|
autohide_enabled: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Options {
|
export default Post;
|
||||||
auth?: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function getFeed(options: Options = {}): Promise<Post[]> {
|
|
||||||
const { auth } = options;
|
|
||||||
const headers = auth ? { Authorization: getAuthHeader() } : null;
|
|
||||||
try {
|
|
||||||
const resp = await axios.get(URL, { headers });
|
|
||||||
return resp.data.results;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function getPost(id: number, options: Options = {}): Promise<Post> {
|
|
||||||
const { auth } = options;
|
|
||||||
const headers = auth ? { Authorization: getAuthHeader() } : null;
|
|
||||||
try {
|
|
||||||
const resp = await axios.get(`${URL}${id}/`, { headers });
|
|
||||||
return resp.data;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function createPost(data): Promise<Post> {
|
|
||||||
try {
|
|
||||||
const resp = await axios.post(URL, data, {
|
|
||||||
headers: {
|
|
||||||
Authorization: getAuthHeader(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
return resp.data;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function updatePost(data): Promise<Post> {
|
|
||||||
try {
|
|
||||||
const putUrl = `${URL}${data.id}/`;
|
|
||||||
const resp = await axios.put(putUrl, data, {
|
|
||||||
headers: {
|
|
||||||
Authorization: getAuthHeader(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
return resp.data;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export const feedFetcher = (url: string, config?: AxiosRequestConfig) => axios.get(url, config).then((res) => res.data);
|
|
||||||
|
|
||||||
export const generateFetchParams = (id = "", options: Options = {}) => {
|
|
||||||
const url = `${URL}${id}`;
|
|
||||||
const { auth } = options;
|
|
||||||
|
|
||||||
return {
|
|
||||||
url,
|
|
||||||
config: {
|
|
||||||
headers: auth ? { Authorization: getAuthHeader() } : null,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
interface FetchArguments {
|
|
||||||
initialData?: Post | Post[],
|
|
||||||
id?: string;
|
|
||||||
options?: Options
|
|
||||||
}
|
|
||||||
|
|
||||||
export const useFetchFeed = ({
|
|
||||||
initialData,
|
|
||||||
id = "",
|
|
||||||
options = {},
|
|
||||||
}: FetchArguments) => {
|
|
||||||
const { url, config } = generateFetchParams(id, options);
|
|
||||||
const { data, error } = useSWR([url, config], feedFetcher, { initialData });
|
|
||||||
return {
|
|
||||||
data: data?.results || data,
|
|
||||||
error,
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|||||||
+2
-111
@@ -1,11 +1,4 @@
|
|||||||
import axios, { AxiosRequestConfig } from "axios";
|
interface JobAd {
|
||||||
import useSWR from "swr";
|
|
||||||
import qs from "query-string";
|
|
||||||
import { getAuthHeader } from "@utils/auth";
|
|
||||||
|
|
||||||
const URL = `${process.env.NEXT_PUBLIC_API_URL}/jobads/`;
|
|
||||||
|
|
||||||
export interface JobAd {
|
|
||||||
id: number;
|
id: number;
|
||||||
title_fi: string;
|
title_fi: string;
|
||||||
title_en: string;
|
title_en: string;
|
||||||
@@ -17,106 +10,4 @@ export interface JobAd {
|
|||||||
autohide_enabled: boolean;
|
autohide_enabled: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GetJobAdsOptions {
|
export default JobAd;
|
||||||
onlyNonPast?: boolean;
|
|
||||||
limit?: number;
|
|
||||||
auth?: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const getJobAds = async (options: GetJobAdsOptions = {}): Promise<JobAd[]> => {
|
|
||||||
const { onlyNonPast, limit, auth } = options;
|
|
||||||
try {
|
|
||||||
const params = {
|
|
||||||
since: onlyNonPast ? (new Date()).toISOString() : undefined,
|
|
||||||
limit,
|
|
||||||
};
|
|
||||||
const search = qs.stringify(params);
|
|
||||||
const headers = auth ? { Authorization: getAuthHeader() } : null;
|
|
||||||
const resp = await axios.get(`${URL}?${search}`, {
|
|
||||||
headers,
|
|
||||||
});
|
|
||||||
return resp.data.results;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getJobAd = async (id: number, auth = false): Promise<JobAd> => {
|
|
||||||
try {
|
|
||||||
const headers = auth ? { Authorization: getAuthHeader() } : null;
|
|
||||||
const resp = await axios.get(`${URL}${id}/`, {
|
|
||||||
headers,
|
|
||||||
});
|
|
||||||
return resp.data;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export const createJobAd = async (data: any): Promise<JobAd> => {
|
|
||||||
try {
|
|
||||||
const resp = await axios.post(URL, data, {
|
|
||||||
headers: {
|
|
||||||
Authorization: getAuthHeader(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
return resp.data;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export const updateJobAd = async (data: any): Promise<JobAd> => {
|
|
||||||
try {
|
|
||||||
const putUrl = `${URL}${data.id}/`;
|
|
||||||
const resp = await axios.put(putUrl, data, {
|
|
||||||
headers: {
|
|
||||||
Authorization: getAuthHeader(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
return resp.data;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export const jobAdFetcher = (url: string, config?: AxiosRequestConfig) => axios.get(url, config).then((res) => res.data);
|
|
||||||
|
|
||||||
export const generateFetchParams = (id = "", options: Options = {}) => {
|
|
||||||
const url = `${URL}${id}`;
|
|
||||||
const { auth } = options;
|
|
||||||
|
|
||||||
return {
|
|
||||||
url,
|
|
||||||
config: {
|
|
||||||
headers: auth ? { Authorization: getAuthHeader() } : null,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
interface Options {
|
|
||||||
auth?: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface FetchArguments {
|
|
||||||
initialData?: JobAd | JobAd[],
|
|
||||||
id?: string;
|
|
||||||
options?: Options;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const useFetchJobAds = ({
|
|
||||||
initialData,
|
|
||||||
id = "",
|
|
||||||
options = {},
|
|
||||||
}: FetchArguments) => {
|
|
||||||
const { url, config } = generateFetchParams(id, options);
|
|
||||||
const { data, error } = useSWR([url, config], jobAdFetcher, { initialData });
|
|
||||||
return {
|
|
||||||
data: data?.results || data,
|
|
||||||
error,
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|||||||
+19
-69
@@ -1,7 +1,4 @@
|
|||||||
import axios from "axios";
|
import { Question } from "@components/Widgets/SignupQuestionsWidget/common";
|
||||||
import { getAuthHeader } from "@utils/auth";
|
|
||||||
|
|
||||||
const url = `${process.env.NEXT_PUBLIC_API_URL}/signup/`;
|
|
||||||
|
|
||||||
export interface Signup {
|
export interface Signup {
|
||||||
id?: number;
|
id?: number;
|
||||||
@@ -9,68 +6,21 @@ export interface Signup {
|
|||||||
answer: string;
|
answer: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getSignup = async (id: number): Promise<Signup> => {
|
export interface SignupForm {
|
||||||
try {
|
id?: number;
|
||||||
const resp = await axios.get(`${url}${id}`, {
|
title_fi: string;
|
||||||
headers: {
|
title_en: string;
|
||||||
Authorization: getAuthHeader(),
|
visible: boolean;
|
||||||
},
|
start_time: string;
|
||||||
});
|
end_time: string;
|
||||||
return resp.data;
|
questions: Question[];
|
||||||
} catch (err) {
|
signups: string[];
|
||||||
console.error(err);
|
quota: number;
|
||||||
throw err;
|
schema: {
|
||||||
}
|
title?: string;
|
||||||
};
|
type: string;
|
||||||
|
required: string[];
|
||||||
export const createSignup = async (data: Signup): Promise<Signup> => {
|
properties: any;
|
||||||
try {
|
minProperties?: number;
|
||||||
const resp = await axios.post(url, data);
|
};
|
||||||
return resp.data;
|
}
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export const updateSignup = async (data: Signup, uuid: string): Promise<Signup> => {
|
|
||||||
try {
|
|
||||||
const { id } = data;
|
|
||||||
if (!id) throw new Error("SignupId required!");
|
|
||||||
const resp = await axios.put(`${url}${id}/edit/`, data, {
|
|
||||||
params: { uuid },
|
|
||||||
});
|
|
||||||
return resp.data;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getSignupUUID = async (id: number, uuid: string): Promise<Signup> => {
|
|
||||||
try {
|
|
||||||
const resp = await axios.get(`${url}${id}/edit/`, {
|
|
||||||
params: {
|
|
||||||
uuid,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
return resp.data;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export const deleteSignup = async (id: number) => {
|
|
||||||
try {
|
|
||||||
const resp = await axios.delete(`${url}${id}`, {
|
|
||||||
headers: {
|
|
||||||
Authorization: getAuthHeader(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
return resp.data;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|||||||
@@ -1,123 +0,0 @@
|
|||||||
import axios from "axios";
|
|
||||||
import { getAuthHeader } from "@utils/auth";
|
|
||||||
import { Question } from "@components/Widgets/SignupQuestionsWidget/common";
|
|
||||||
import { Signup } from "./Signup";
|
|
||||||
|
|
||||||
const URL = `${process.env.NEXT_PUBLIC_API_URL}/signupForm/`;
|
|
||||||
|
|
||||||
export interface SignupForm {
|
|
||||||
id?: number;
|
|
||||||
title_fi: string;
|
|
||||||
title_en: string;
|
|
||||||
visible: boolean;
|
|
||||||
start_time: string;
|
|
||||||
end_time: string;
|
|
||||||
questions: Question[];
|
|
||||||
signups: string[];
|
|
||||||
quota: number;
|
|
||||||
schema: {
|
|
||||||
title?: string;
|
|
||||||
type: string;
|
|
||||||
required: string[];
|
|
||||||
properties: any;
|
|
||||||
minProperties?: number;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function getForms(auth = false): Promise<SignupForm[]> {
|
|
||||||
try {
|
|
||||||
const headers = auth ? { Authorization: getAuthHeader() } : null;
|
|
||||||
const resp = await axios.get(URL, {
|
|
||||||
headers,
|
|
||||||
});
|
|
||||||
const { results } = resp.data;
|
|
||||||
return results;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function getForm(id: number, auth = false): Promise<SignupForm> {
|
|
||||||
try {
|
|
||||||
const headers = auth ? { Authorization: getAuthHeader() } : null;
|
|
||||||
const resp = await axios.get(`${URL}${id}/`, {
|
|
||||||
headers,
|
|
||||||
});
|
|
||||||
return resp.data;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function createForm(data): Promise<SignupForm> {
|
|
||||||
try {
|
|
||||||
const resp = await axios.post(URL, data, {
|
|
||||||
headers: {
|
|
||||||
Authorization: getAuthHeader(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
return resp.data;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function updateForm(data): Promise<SignupForm> {
|
|
||||||
try {
|
|
||||||
const putUrl = `${URL}${data.id}/`;
|
|
||||||
const resp = await axios.put(putUrl, data, {
|
|
||||||
headers: {
|
|
||||||
Authorization: getAuthHeader(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
return resp.data;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function deleteForm(id: number) {
|
|
||||||
try {
|
|
||||||
const resp = await axios.delete(`${URL}${id}`, {
|
|
||||||
headers: {
|
|
||||||
Authorization: getAuthHeader(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
return resp.data;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export const signupFormSendEmail = async (data, id): Promise<any> => {
|
|
||||||
try {
|
|
||||||
const resp = await axios.post(`${URL}${id}/sendemail/`, data, {
|
|
||||||
headers: {
|
|
||||||
Authorization: getAuthHeader(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
return resp.data;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getSignups = async (id): Promise<Signup[]> => {
|
|
||||||
try {
|
|
||||||
const resp = await axios.get(`${URL}${id}/signups/`, {
|
|
||||||
headers: {
|
|
||||||
Authorization: getAuthHeader(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
return resp.data;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
+2
-14
@@ -1,8 +1,4 @@
|
|||||||
import axios from "axios";
|
interface Tag {
|
||||||
|
|
||||||
const url = `${process.env.NEXT_PUBLIC_API_URL}/tags/`;
|
|
||||||
|
|
||||||
export interface Tag {
|
|
||||||
id: number;
|
id: number;
|
||||||
name_fi: string;
|
name_fi: string;
|
||||||
name_en: string;
|
name_en: string;
|
||||||
@@ -10,12 +6,4 @@ export interface Tag {
|
|||||||
icon: string;
|
icon: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getTags(): Promise<Tag[]> {
|
export default Tag;
|
||||||
try {
|
|
||||||
const resp = await axios.get(url);
|
|
||||||
return resp.data.results;
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -3,11 +3,12 @@ import { NextPage } from "next";
|
|||||||
import Head from "next/head";
|
import Head from "next/head";
|
||||||
import { useRouter } from "next/router";
|
import { useRouter } from "next/router";
|
||||||
import AdminCreateCommon from "@views/admin/AdminCreateCommon";
|
import AdminCreateCommon from "@views/admin/AdminCreateCommon";
|
||||||
import { Tag, getTags } from "@models/Tag";
|
import Tag from "@models/Tag";
|
||||||
import { SignupForm, getForms } from "@models/SignupForm";
|
import TagApi from "@api/tagApi";
|
||||||
import {
|
import { SignupForm } from "@models/Signup";
|
||||||
Event, createEvent, getEvent, updateEvent,
|
import SignupApi from "@api/signupApi";
|
||||||
} from "@models/Event";
|
import Event from "@models/Event";
|
||||||
|
import EventApi from "@api/eventApi";
|
||||||
import DatetimeWidget from "@components/Widgets/DatetimeWidget";
|
import DatetimeWidget from "@components/Widgets/DatetimeWidget";
|
||||||
import SectionDividerWidget from "@components/Widgets/SectionDividerWidget";
|
import SectionDividerWidget from "@components/Widgets/SectionDividerWidget";
|
||||||
import MarkdownEditorWidget from "@components/Widgets/MarkdownEditorWidget";
|
import MarkdownEditorWidget from "@components/Widgets/MarkdownEditorWidget";
|
||||||
@@ -177,17 +178,17 @@ const EventCreatePage: NextPage = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
getTags()
|
TagApi.getTags()
|
||||||
.then((res) => setTags(res))
|
.then((res) => setTags(res))
|
||||||
.catch((err) => setError(err));
|
.catch((err) => setError(err));
|
||||||
|
|
||||||
getForms(true)
|
SignupApi.getForms(true)
|
||||||
.then((res) => setSignupForms(res))
|
.then((res) => setSignupForms(res))
|
||||||
.catch((err) => setError(err));
|
.catch((err) => setError(err));
|
||||||
|
|
||||||
const eventId = id && Number(id);
|
const eventId = id && Number(id);
|
||||||
if (eventId !== undefined) {
|
if (eventId !== undefined) {
|
||||||
getEvent(eventId, true)
|
EventApi.getEvent(eventId, true)
|
||||||
.then((res) => setFormData({
|
.then((res) => setFormData({
|
||||||
...res,
|
...res,
|
||||||
tags: (res.tags).map((inst) => inst.id) as any,
|
tags: (res.tags).map((inst) => inst.id) as any,
|
||||||
@@ -205,7 +206,7 @@ const EventCreatePage: NextPage = () => {
|
|||||||
if (typeof payload.image === "string" && payload.image.startsWith("http")) payload.image = undefined;
|
if (typeof payload.image === "string" && payload.image.startsWith("http")) payload.image = undefined;
|
||||||
|
|
||||||
if (payload.id === undefined) {
|
if (payload.id === undefined) {
|
||||||
const resp = await createEvent(payload);
|
const resp = await EventApi.createEvent(payload);
|
||||||
// TODO: Backend return old data because of Prefetch (used for filtering invisble signupForms from GET)
|
// TODO: Backend return old data because of Prefetch (used for filtering invisble signupForms from GET)
|
||||||
// Copy from old state instead...
|
// Copy from old state instead...
|
||||||
// resp.tags = (resp.tags as any).map(inst => inst.id);
|
// resp.tags = (resp.tags as any).map(inst => inst.id);
|
||||||
@@ -215,7 +216,7 @@ const EventCreatePage: NextPage = () => {
|
|||||||
setStatusMessage("Event created successfully");
|
setStatusMessage("Event created successfully");
|
||||||
setFormData(resp);
|
setFormData(resp);
|
||||||
} else {
|
} else {
|
||||||
const resp = await updateEvent(payload);
|
const resp = await EventApi.updateEvent(payload);
|
||||||
// TODO: Backend return old data because of Prefetch (used for filtering invisble signupForms from GET)
|
// TODO: Backend return old data because of Prefetch (used for filtering invisble signupForms from GET)
|
||||||
// Copy from old state instead...
|
// Copy from old state instead...
|
||||||
// resp.tags = (resp.tags as any).map(inst => inst.id);
|
// resp.tags = (resp.tags as any).map(inst => inst.id);
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ import { formatRelative } from "date-fns";
|
|||||||
import AdminListCommon from "@views/admin/AdminListCommon";
|
import AdminListCommon from "@views/admin/AdminListCommon";
|
||||||
import { Link } from "@components/index";
|
import { Link } from "@components/index";
|
||||||
import AddLink from "@components/AddLink";
|
import AddLink from "@components/AddLink";
|
||||||
import { Event, getEvents } from "@models/Event";
|
import Event from "@models/Event";
|
||||||
|
import EventApi from "@api/eventApi";
|
||||||
|
|
||||||
const URL = "/admin/events";
|
const URL = "/admin/events";
|
||||||
|
|
||||||
@@ -39,7 +40,7 @@ const AdminEventPage: NextPage = () => {
|
|||||||
const [events, setEvents] = useState<Event[]>(null);
|
const [events, setEvents] = useState<Event[]>(null);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
getEvents({ auth: true })
|
EventApi.getEvents({ auth: true })
|
||||||
.then((res) => setEvents(res));
|
.then((res) => setEvents(res));
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ import { NextPage } from "next";
|
|||||||
import Head from "next/head";
|
import Head from "next/head";
|
||||||
import { useRouter } from "next/router";
|
import { useRouter } from "next/router";
|
||||||
import AdminCreateCommon from "@views/admin/AdminCreateCommon";
|
import AdminCreateCommon from "@views/admin/AdminCreateCommon";
|
||||||
import { Tag, getTags } from "@models/Tag";
|
import Tag from "@models/Tag";
|
||||||
import {
|
import TagApi from "@api/tagApi";
|
||||||
Post, createPost, getPost, updatePost,
|
import Post from "@models/Feed";
|
||||||
} from "@models/Feed";
|
import FeedApi from "@api/feedApi";
|
||||||
import DatetimeWidget from "@components/Widgets/DatetimeWidget";
|
import DatetimeWidget from "@components/Widgets/DatetimeWidget";
|
||||||
import SectionDividerWidget from "@components/Widgets/SectionDividerWidget";
|
import SectionDividerWidget from "@components/Widgets/SectionDividerWidget";
|
||||||
import MarkdownEditorWidget from "@components/Widgets/MarkdownEditorWidget";
|
import MarkdownEditorWidget from "@components/Widgets/MarkdownEditorWidget";
|
||||||
@@ -145,13 +145,13 @@ const FeedCreatePage: NextPage = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
getTags()
|
TagApi.getTags()
|
||||||
.then((res) => setTags(res))
|
.then((res) => setTags(res))
|
||||||
.catch((err) => setError(err));
|
.catch((err) => setError(err));
|
||||||
|
|
||||||
const feedId = id && Number(id);
|
const feedId = id && Number(id);
|
||||||
if (feedId !== undefined) {
|
if (feedId !== undefined) {
|
||||||
getPost(feedId, { auth: true })
|
FeedApi.getPost(feedId, { auth: true })
|
||||||
.then((res) => setFormData({
|
.then((res) => setFormData({
|
||||||
...res,
|
...res,
|
||||||
tags: (res.tags).map((inst) => inst.id) as any,
|
tags: (res.tags).map((inst) => inst.id) as any,
|
||||||
@@ -166,12 +166,12 @@ const FeedCreatePage: NextPage = () => {
|
|||||||
payload.tag_id = payload.tags;
|
payload.tag_id = payload.tags;
|
||||||
payload.autohide = payload.autohide || new Date();
|
payload.autohide = payload.autohide || new Date();
|
||||||
if (payload.id === undefined) {
|
if (payload.id === undefined) {
|
||||||
const resp = await createPost(payload);
|
const resp = await FeedApi.createPost(payload);
|
||||||
// resp.tags = resp.tags;
|
// resp.tags = resp.tags;
|
||||||
setStatusMessage("Post created successfully");
|
setStatusMessage("Post created successfully");
|
||||||
setFormData(resp);
|
setFormData(resp);
|
||||||
} else {
|
} else {
|
||||||
const resp = await updatePost(payload);
|
const resp = await FeedApi.updatePost(payload);
|
||||||
// resp.tags = resp.tag_id;
|
// resp.tags = resp.tag_id;
|
||||||
setStatusMessage("Post updated successfully");
|
setStatusMessage("Post updated successfully");
|
||||||
setFormData(resp);
|
setFormData(resp);
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ import { formatRelative } from "date-fns";
|
|||||||
import AdminListCommon from "@views/admin/AdminListCommon";
|
import AdminListCommon from "@views/admin/AdminListCommon";
|
||||||
import { Link } from "@components/index";
|
import { Link } from "@components/index";
|
||||||
import AddLink from "@components/AddLink";
|
import AddLink from "@components/AddLink";
|
||||||
import { Post, getFeed } from "@models/Feed";
|
import Post from "@models/Feed";
|
||||||
|
import FeedApi from "@api/feedApi";
|
||||||
|
|
||||||
const URL = "/admin/feed";
|
const URL = "/admin/feed";
|
||||||
|
|
||||||
@@ -40,7 +41,7 @@ const AdminFeedPage: NextPage = () => {
|
|||||||
const [forms, setForms] = useState<Post[]>(null);
|
const [forms, setForms] = useState<Post[]>(null);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
getFeed({ auth: true })
|
FeedApi.getFeed({ auth: true })
|
||||||
.then((res) => setForms(res));
|
.then((res) => setForms(res));
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,8 @@ import { NextPage } from "next";
|
|||||||
import Head from "next/head";
|
import Head from "next/head";
|
||||||
import { useRouter } from "next/router";
|
import { useRouter } from "next/router";
|
||||||
import AdminCreateCommon from "@views/admin/AdminCreateCommon";
|
import AdminCreateCommon from "@views/admin/AdminCreateCommon";
|
||||||
import {
|
import JobAd from "@models/JobAd";
|
||||||
JobAd, getJobAd, createJobAd, updateJobAd,
|
import JobAdApi from "@api/jobAdApi";
|
||||||
} from "@models/JobAd";
|
|
||||||
import DatetimeWidget from "@components/Widgets/DatetimeWidget";
|
import DatetimeWidget from "@components/Widgets/DatetimeWidget";
|
||||||
import SectionDividerWidget from "@components/Widgets/SectionDividerWidget";
|
import SectionDividerWidget from "@components/Widgets/SectionDividerWidget";
|
||||||
import MarkdownEditorWidget from "@components/Widgets/MarkdownEditorWidget";
|
import MarkdownEditorWidget from "@components/Widgets/MarkdownEditorWidget";
|
||||||
@@ -123,7 +122,7 @@ const JobAdCreatePage: NextPage = () => {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const jobId = id && Number(id);
|
const jobId = id && Number(id);
|
||||||
if (jobId !== undefined) {
|
if (jobId !== undefined) {
|
||||||
getJobAd(jobId, true)
|
JobAdApi.getJobAd(jobId, true)
|
||||||
.then((res) => setFormData(res))
|
.then((res) => setFormData(res))
|
||||||
.catch((err) => setError(err));
|
.catch((err) => setError(err));
|
||||||
}
|
}
|
||||||
@@ -133,11 +132,11 @@ const JobAdCreatePage: NextPage = () => {
|
|||||||
try {
|
try {
|
||||||
const payload = data.formData;
|
const payload = data.formData;
|
||||||
if (payload.id === undefined) {
|
if (payload.id === undefined) {
|
||||||
const resp = await createJobAd(payload);
|
const resp = await JobAdApi.createJobAd(payload);
|
||||||
setStatusMessage("Post created successfully");
|
setStatusMessage("Post created successfully");
|
||||||
setFormData(resp);
|
setFormData(resp);
|
||||||
} else {
|
} else {
|
||||||
const resp = await updateJobAd(payload);
|
const resp = await JobAdApi.updateJobAd(payload);
|
||||||
setStatusMessage("Post updated successfully");
|
setStatusMessage("Post updated successfully");
|
||||||
setFormData(resp);
|
setFormData(resp);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ import { formatRelative } from "date-fns";
|
|||||||
import AdminListCommon from "@views/admin/AdminListCommon";
|
import AdminListCommon from "@views/admin/AdminListCommon";
|
||||||
import { Link } from "@components/index";
|
import { Link } from "@components/index";
|
||||||
import AddLink from "@components/AddLink";
|
import AddLink from "@components/AddLink";
|
||||||
import { JobAd, getJobAds } from "@models/JobAd";
|
import JobAd from "@models/JobAd";
|
||||||
|
import JobAdApi from "@api/jobAdApi";
|
||||||
|
|
||||||
const URL = "/admin/jobads";
|
const URL = "/admin/jobads";
|
||||||
|
|
||||||
@@ -44,7 +45,7 @@ const AdminJobAdPage: NextPage = () => {
|
|||||||
const [jobAds, setAds] = useState<JobAd[]>(null);
|
const [jobAds, setAds] = useState<JobAd[]>(null);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
getJobAds({ auth: true })
|
JobAdApi.getJobAds({ auth: true })
|
||||||
.then((res) => setAds(res));
|
.then((res) => setAds(res));
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,8 @@ import { NextPage } from "next";
|
|||||||
import Head from "next/head";
|
import Head from "next/head";
|
||||||
import { useRouter } from "next/router";
|
import { useRouter } from "next/router";
|
||||||
import AdminCreateCommon from "@views/admin/AdminCreateCommon";
|
import AdminCreateCommon from "@views/admin/AdminCreateCommon";
|
||||||
import {
|
import { SignupForm } from "@models/Signup";
|
||||||
SignupForm, createForm, getForm, updateForm,
|
import SignupApi from "@api/signupApi";
|
||||||
} from "@models/SignupForm";
|
|
||||||
import DatetimeWidget from "@components/Widgets/DatetimeWidget";
|
import DatetimeWidget from "@components/Widgets/DatetimeWidget";
|
||||||
import SignupQuestionsWidget from "@components/Widgets/SignupQuestionsWidget/SignupQuestionsWidget";
|
import SignupQuestionsWidget from "@components/Widgets/SignupQuestionsWidget/SignupQuestionsWidget";
|
||||||
import MarkdownEditorWidget from "@components/Widgets/MarkdownEditorWidget";
|
import MarkdownEditorWidget from "@components/Widgets/MarkdownEditorWidget";
|
||||||
@@ -113,7 +112,7 @@ const SignupCreatePage: NextPage = () => {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const suId = id && Number(id);
|
const suId = id && Number(id);
|
||||||
if (suId !== undefined) {
|
if (suId !== undefined) {
|
||||||
getForm(suId, true)
|
SignupApi.getForm(suId, true)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
setFormData({
|
setFormData({
|
||||||
...res,
|
...res,
|
||||||
@@ -134,14 +133,14 @@ const SignupCreatePage: NextPage = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (payload.id === undefined) {
|
if (payload.id === undefined) {
|
||||||
const resp = await createForm(payload);
|
const resp = await SignupApi.createForm(payload);
|
||||||
setStatusMessage("Sign-up created successfully");
|
setStatusMessage("Sign-up created successfully");
|
||||||
setFormData({
|
setFormData({
|
||||||
...resp,
|
...resp,
|
||||||
questions: JSON.stringify(resp.questions) as any,
|
questions: JSON.stringify(resp.questions) as any,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
const resp = await updateForm(payload);
|
const resp = await SignupApi.updateForm(payload);
|
||||||
setStatusMessage("Sign-up updated successfully");
|
setStatusMessage("Sign-up updated successfully");
|
||||||
setFormData({
|
setFormData({
|
||||||
...resp,
|
...resp,
|
||||||
|
|||||||
@@ -3,7 +3,8 @@ import { NextPage } from "next";
|
|||||||
import { useRouter } from "next/router";
|
import { useRouter } from "next/router";
|
||||||
import AdminCreateCommon from "@views/admin/AdminCreateCommon";
|
import AdminCreateCommon from "@views/admin/AdminCreateCommon";
|
||||||
import MarkdownEditorWidget from "@components/Widgets/MarkdownEditorWidget";
|
import MarkdownEditorWidget from "@components/Widgets/MarkdownEditorWidget";
|
||||||
import { SignupForm, getForm, signupFormSendEmail } from "@models/SignupForm";
|
import { SignupForm } from "@models/Signup";
|
||||||
|
import SignupApi from "@api/signupApi";
|
||||||
|
|
||||||
const widgets = {
|
const widgets = {
|
||||||
markdownEditor: MarkdownEditorWidget,
|
markdownEditor: MarkdownEditorWidget,
|
||||||
@@ -52,7 +53,7 @@ const SignupEmailPage: NextPage = () => {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const formId = Number(id);
|
const formId = Number(id);
|
||||||
if (formId !== undefined) {
|
if (formId !== undefined) {
|
||||||
getForm(formId, true)
|
SignupApi.getForm(formId, true)
|
||||||
.then((res) => setSignupForm(res));
|
.then((res) => setSignupForm(res));
|
||||||
}
|
}
|
||||||
}, [id]);
|
}, [id]);
|
||||||
@@ -63,7 +64,7 @@ const SignupEmailPage: NextPage = () => {
|
|||||||
const onSubmit = async (data) => {
|
const onSubmit = async (data) => {
|
||||||
try {
|
try {
|
||||||
const payload = data.formData;
|
const payload = data.formData;
|
||||||
await signupFormSendEmail(payload, id);
|
await SignupApi.signupFormSendEmail(payload, id);
|
||||||
setStatusMessage("Email sent successfully");
|
setStatusMessage("Email sent successfully");
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
setError(err);
|
setError(err);
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import { useRouter } from "next/router";
|
|||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
import { CSVLink } from "react-csv";
|
import { CSVLink } from "react-csv";
|
||||||
import AdminListCommon from "@views/admin/AdminListCommon";
|
import AdminListCommon from "@views/admin/AdminListCommon";
|
||||||
import { SignupForm, getForm, getSignups } from "@models/SignupForm";
|
import { Signup, SignupForm } from "@models/Signup";
|
||||||
import { Signup, deleteSignup } from "@models/Signup";
|
import SignupApi from "@api/signupApi";
|
||||||
import { Button } from "@components/index";
|
import { Button } from "@components/index";
|
||||||
import noop from "@utils/noop";
|
import noop from "@utils/noop";
|
||||||
|
|
||||||
@@ -22,16 +22,16 @@ const SignupEmailPage: NextPage = () => {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const formId = Number(id);
|
const formId = Number(id);
|
||||||
getForm(formId, true)
|
SignupApi.getForm(formId, true)
|
||||||
.then((res) => setSignupForm(res));
|
.then((res) => setSignupForm(res));
|
||||||
|
|
||||||
getSignups(formId).then((res) => setSignups(res));
|
SignupApi.getSignups(formId).then((res) => setSignups(res));
|
||||||
}, [id]);
|
}, [id]);
|
||||||
|
|
||||||
const confirmDelete = async (signup: Signup, question: any) => {
|
const confirmDelete = async (signup: Signup, question: any) => {
|
||||||
if (window.confirm(`Delete: ${signup.id}: ${signup.answer[question.id]}; Are you sure?`) === true) {
|
if (window.confirm(`Delete: ${signup.id}: ${signup.answer[question.id]}; Are you sure?`) === true) {
|
||||||
try {
|
try {
|
||||||
await deleteSignup(signup.id);
|
await SignupApi.deleteSignup(signup.id);
|
||||||
setSignups(signups.filter((s) => s.id !== signup.id));
|
setSignups(signups.filter((s) => s.id !== signup.id));
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
window.alert("Delete failed!");
|
window.alert("Delete failed!");
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ import { formatRelative } from "date-fns";
|
|||||||
import AdminListCommon from "@views/admin/AdminListCommon";
|
import AdminListCommon from "@views/admin/AdminListCommon";
|
||||||
import { Link } from "@components/index";
|
import { Link } from "@components/index";
|
||||||
import AddLink from "@components/AddLink";
|
import AddLink from "@components/AddLink";
|
||||||
import { SignupForm, getForms } from "@models/SignupForm";
|
import { SignupForm } from "@models/Signup";
|
||||||
|
import SignupApi from "@api/signupApi";
|
||||||
|
|
||||||
const URL = "/admin/signups";
|
const URL = "/admin/signups";
|
||||||
|
|
||||||
@@ -44,7 +45,7 @@ const AdminSignupPage: NextPage = () => {
|
|||||||
const [forms, setForms] = useState<SignupForm[]>(null);
|
const [forms, setForms] = useState<SignupForm[]>(null);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
getForms(true)
|
SignupApi.getForms(true)
|
||||||
.then((res) => setForms(res));
|
.then((res) => setForms(res));
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ import React from "react";
|
|||||||
import { NextPage, GetStaticProps, GetStaticPaths } from "next";
|
import { NextPage, GetStaticProps, GetStaticPaths } from "next";
|
||||||
import Head from "next/head";
|
import Head from "next/head";
|
||||||
import { useRouter } from "next/router";
|
import { useRouter } from "next/router";
|
||||||
import {
|
import Event from "@models/Event";
|
||||||
Event, useFetchEvents, eventFetcher, generateFetchParams,
|
import EventApi from "@api/eventApi";
|
||||||
} from "@models/Event";
|
import useFetchEvents from "@hooks/useFetchEvents";
|
||||||
import EventPageView from "@views/EventPage/EventPageView";
|
import EventPageView from "@views/EventPage/EventPageView";
|
||||||
import PageWrapper from "@views/common/PageWrapper";
|
import PageWrapper from "@views/common/PageWrapper";
|
||||||
import LoadingView from "@views/common/LoadingView";
|
import LoadingView from "@views/common/LoadingView";
|
||||||
@@ -35,9 +35,8 @@ const EventPage: NextPage<InitialProps> = ({ initialEvent }) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const getStaticPaths: GetStaticPaths = async () => {
|
export const getStaticPaths: GetStaticPaths = async () => {
|
||||||
const { url, config } = generateFetchParams();
|
const allEvents = await EventApi.getEvents();
|
||||||
const allEvents = await eventFetcher(url, config);
|
const paths = allEvents.map((e: Event) => ({
|
||||||
const paths = allEvents.results.map((e: Event) => ({
|
|
||||||
params: {
|
params: {
|
||||||
id: String(e.id),
|
id: String(e.id),
|
||||||
},
|
},
|
||||||
@@ -51,8 +50,7 @@ export const getStaticPaths: GetStaticPaths = async () => {
|
|||||||
|
|
||||||
export const getStaticProps: GetStaticProps<InitialProps> = async ({ params }) => {
|
export const getStaticProps: GetStaticProps<InitialProps> = async ({ params }) => {
|
||||||
const { id } = params;
|
const { id } = params;
|
||||||
const { url, config } = generateFetchParams(id as string);
|
const initialEvent = await EventApi.getEvent(Number(id));
|
||||||
const initialEvent = await eventFetcher(url, config);
|
|
||||||
return {
|
return {
|
||||||
props: {
|
props: {
|
||||||
initialEvent,
|
initialEvent,
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import { NextPage, GetStaticProps } from "next";
|
import { NextPage, GetStaticProps } from "next";
|
||||||
import Head from "next/head";
|
import Head from "next/head";
|
||||||
import {
|
import Event from "@models/Event";
|
||||||
Event, useFetchEvents, eventFetcher, generateFetchParams as eventParams,
|
import EventApi from "@api/eventApi";
|
||||||
} from "@models/Event";
|
import useFetchEvents from "@hooks/useFetchEvents";
|
||||||
import {
|
import Post from "@models/Feed";
|
||||||
Post, useFetchFeed, feedFetcher, generateFetchParams as feedParams,
|
import FeedApi from "@api/feedApi";
|
||||||
} from "@models/Feed";
|
import useFetchFeed from "@hooks/useFetchFeed";
|
||||||
import InEnglishPageView from "@views/InEnglishPage/InEnglishPageView";
|
import InEnglishPageView from "@views/InEnglishPage/InEnglishPageView";
|
||||||
import PageWrapper from "@views/common/PageWrapper";
|
import PageWrapper from "@views/common/PageWrapper";
|
||||||
|
|
||||||
@@ -37,12 +37,8 @@ const InEnglishPage: NextPage<InitialProps> = ({ initialEvents, initialFeed }) =
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const getStaticProps: GetStaticProps<InitialProps> = async () => {
|
export const getStaticProps: GetStaticProps<InitialProps> = async () => {
|
||||||
let url: string;
|
const initialEvents = await EventApi.getEvents(eventOptions);
|
||||||
let config: any;
|
const initialFeed = await FeedApi.getFeed();
|
||||||
({ url, config } = eventParams("", eventOptions));
|
|
||||||
const initialEvents = await eventFetcher(url, config);
|
|
||||||
({ url, config } = feedParams(""));
|
|
||||||
const initialFeed = await feedFetcher(url, config);
|
|
||||||
return {
|
return {
|
||||||
props: {
|
props: {
|
||||||
initialEvents,
|
initialEvents,
|
||||||
|
|||||||
+8
-12
@@ -1,12 +1,12 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import { NextPage, GetStaticProps } from "next";
|
import { NextPage, GetStaticProps } from "next";
|
||||||
import Head from "next/head";
|
import Head from "next/head";
|
||||||
import {
|
import Event from "@models/Event";
|
||||||
Event, useFetchEvents, eventFetcher, generateFetchParams as eventParams,
|
import EventApi from "@api/eventApi";
|
||||||
} from "@models/Event";
|
import useFetchEvents from "@hooks/useFetchEvents";
|
||||||
import {
|
import Post from "@models/Feed";
|
||||||
Post, useFetchFeed, feedFetcher, generateFetchParams as feedParams,
|
import FeedApi from "@api/feedApi";
|
||||||
} from "@models/Feed";
|
import useFetchFeed from "@hooks/useFetchFeed";
|
||||||
import FrontPageView from "@views/FrontPage/FrontPageView";
|
import FrontPageView from "@views/FrontPage/FrontPageView";
|
||||||
import PageWrapper from "@views/common/PageWrapper";
|
import PageWrapper from "@views/common/PageWrapper";
|
||||||
|
|
||||||
@@ -37,12 +37,8 @@ const FrontPage: NextPage<InitialProps> = ({ initialEvents, initialFeed }) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const getStaticProps: GetStaticProps<InitialProps> = async () => {
|
export const getStaticProps: GetStaticProps<InitialProps> = async () => {
|
||||||
let url: string;
|
const initialEvents = await EventApi.getEvents(eventOptions);
|
||||||
let config: any;
|
const initialFeed = await FeedApi.getFeed();
|
||||||
({ url, config } = eventParams("", eventOptions));
|
|
||||||
const initialEvents = await eventFetcher(url, config);
|
|
||||||
({ url, config } = feedParams(""));
|
|
||||||
const initialFeed = await feedFetcher(url, config);
|
|
||||||
return {
|
return {
|
||||||
props: {
|
props: {
|
||||||
initialEvents,
|
initialEvents,
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import { NextPage, GetStaticProps } from "next";
|
import { NextPage, GetStaticProps } from "next";
|
||||||
import Head from "next/head";
|
import Head from "next/head";
|
||||||
import {
|
import Event from "@models/Event";
|
||||||
Event, useFetchEvents, eventFetcher, generateFetchParams as eventParams,
|
import EventApi from "@api/eventApi";
|
||||||
} from "@models/Event";
|
import useFetchEvents from "@hooks/useFetchEvents";
|
||||||
import {
|
import Post from "@models/Feed";
|
||||||
Post, useFetchFeed, feedFetcher, generateFetchParams as feedParams,
|
import FeedApi from "@api/feedApi";
|
||||||
} from "@models/Feed";
|
import useFetchFeed from "@hooks/useFetchFeed";
|
||||||
import ActualPageView from "@views/ActualPage/ActualPageView";
|
import ActualPageView from "@views/ActualPage/ActualPageView";
|
||||||
import PageWrapper from "@views/common/PageWrapper";
|
import PageWrapper from "@views/common/PageWrapper";
|
||||||
|
|
||||||
@@ -36,12 +36,8 @@ const ActualPage: NextPage<InitialProps> = ({ initialEvents, initialFeed }) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const getStaticProps: GetStaticProps<InitialProps> = async () => {
|
export const getStaticProps: GetStaticProps<InitialProps> = async () => {
|
||||||
let url: string;
|
const initialEvents = await EventApi.getEvents(eventOptions);
|
||||||
let config: any;
|
const initialFeed = await FeedApi.getFeed();
|
||||||
({ url, config } = eventParams("", eventOptions));
|
|
||||||
const initialEvents = await eventFetcher(url, config);
|
|
||||||
({ url, config } = feedParams(""));
|
|
||||||
const initialFeed = await feedFetcher(url, config);
|
|
||||||
return {
|
return {
|
||||||
props: {
|
props: {
|
||||||
initialEvents,
|
initialEvents,
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ import React, { useState } from "react";
|
|||||||
import { NextPage, GetStaticProps, GetStaticPaths } from "next";
|
import { NextPage, GetStaticProps, GetStaticPaths } from "next";
|
||||||
import Head from "next/head";
|
import Head from "next/head";
|
||||||
import { useRouter } from "next/router";
|
import { useRouter } from "next/router";
|
||||||
import { getForm, SignupForm, getForms } from "@models/SignupForm";
|
import { Signup, SignupForm } from "@models/Signup";
|
||||||
import { createSignup, Signup } from "@models/Signup";
|
import SignupApi from "@api/signupApi";
|
||||||
import SignUpPageView from "@views/SignUpPage/SignUpPageView";
|
import SignUpPageView from "@views/SignUpPage/SignUpPageView";
|
||||||
import PageWrapper from "@views/common/PageWrapper";
|
import PageWrapper from "@views/common/PageWrapper";
|
||||||
import LoadingView from "@views/common/LoadingView";
|
import LoadingView from "@views/common/LoadingView";
|
||||||
@@ -28,7 +28,7 @@ const SignUpPage: NextPage<InitialProps> = ({ form }) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await createSignup(payload);
|
await SignupApi.createSignup(payload);
|
||||||
// TODO: Fetch/update signup list, so user sees the signup in the list
|
// TODO: Fetch/update signup list, so user sees the signup in the list
|
||||||
setStatus("Sign-up submitted successfully");
|
setStatus("Sign-up submitted successfully");
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@@ -56,7 +56,7 @@ const SignUpPage: NextPage<InitialProps> = ({ form }) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const getStaticPaths: GetStaticPaths = async () => {
|
export const getStaticPaths: GetStaticPaths = async () => {
|
||||||
const allForms = await getForms();
|
const allForms = await SignupApi.getForms();
|
||||||
const paths = allForms.map((e: SignupForm) => ({
|
const paths = allForms.map((e: SignupForm) => ({
|
||||||
params: {
|
params: {
|
||||||
id: String(e.id),
|
id: String(e.id),
|
||||||
@@ -71,7 +71,7 @@ export const getStaticPaths: GetStaticPaths = async () => {
|
|||||||
|
|
||||||
export const getStaticProps: GetStaticProps<InitialProps> = async ({ params }) => {
|
export const getStaticProps: GetStaticProps<InitialProps> = async ({ params }) => {
|
||||||
const { id } = params;
|
const { id } = params;
|
||||||
const form = await getForm(Number(id));
|
const form = await SignupApi.getForm(Number(id));
|
||||||
return {
|
return {
|
||||||
props: {
|
props: {
|
||||||
form,
|
form,
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import React, { useEffect, useState } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
import { NextPage } from "next";
|
import { NextPage } from "next";
|
||||||
import { useRouter } from "next/router";
|
import { useRouter } from "next/router";
|
||||||
import { getForm, SignupForm } from "@models/SignupForm";
|
import { Signup, SignupForm } from "@models/Signup";
|
||||||
import { updateSignup, getSignupUUID, Signup } from "@models/Signup";
|
import SignupApi from "@api/signupApi";
|
||||||
import SignUpPageView from "@views/SignUpPage/SignUpPageView";
|
import SignUpPageView from "@views/SignUpPage/SignUpPageView";
|
||||||
import PageWrapper from "@views/common/PageWrapper";
|
import PageWrapper from "@views/common/PageWrapper";
|
||||||
import noop from "@utils/noop";
|
import noop from "@utils/noop";
|
||||||
@@ -30,7 +30,7 @@ const EditSignUpPage: NextPage = () => {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const fetchSignUpForm = async (id: number): Promise<SignupForm> => {
|
const fetchSignUpForm = async (id: number): Promise<SignupForm> => {
|
||||||
const formPromise = getForm(id);
|
const formPromise = SignupApi.getForm(id);
|
||||||
formPromise.then((form) => {
|
formPromise.then((form) => {
|
||||||
setForm(form);
|
setForm(form);
|
||||||
});
|
});
|
||||||
@@ -38,7 +38,7 @@ const EditSignUpPage: NextPage = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const fetchSignUp = async (id: number, uniqueId: string): Promise<Signup> => {
|
const fetchSignUp = async (id: number, uniqueId: string): Promise<Signup> => {
|
||||||
const signupPromise = getSignupUUID(id, uniqueId);
|
const signupPromise = SignupApi.getSignupUUID(id, uniqueId);
|
||||||
signupPromise.then((signup) => setFormData(signup.answer));
|
signupPromise.then((signup) => setFormData(signup.answer));
|
||||||
return signupPromise;
|
return signupPromise;
|
||||||
};
|
};
|
||||||
@@ -56,7 +56,7 @@ const EditSignUpPage: NextPage = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await updateSignup(payload, uuid);
|
await SignupApi.updateSignup(payload, uuid);
|
||||||
// TODO: Update signup list, so user sees possible changes in the list
|
// TODO: Update signup list, so user sees possible changes in the list
|
||||||
setStatus("Sign-up submission updated successfully");
|
setStatus("Sign-up submission updated successfully");
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import { NextPage, GetStaticProps } from "next";
|
import { NextPage, GetStaticProps } from "next";
|
||||||
import Head from "next/head";
|
import Head from "next/head";
|
||||||
import {
|
import JobAd from "@models/JobAd";
|
||||||
JobAd, useFetchJobAds, jobAdFetcher, generateFetchParams,
|
import JobAdApi from "@api/jobAdApi";
|
||||||
} from "@models/JobAd";
|
import useFetchJobAds from "@hooks/useFetchJobAds";
|
||||||
import CorporatePageView from "@views/CorporatePage/CorporatePageView";
|
import CorporatePageView from "@views/CorporatePage/CorporatePageView";
|
||||||
import PageWrapper from "@views/common/PageWrapper";
|
import PageWrapper from "@views/common/PageWrapper";
|
||||||
|
|
||||||
@@ -27,8 +27,7 @@ const CorporatePage: NextPage<InitialProps> = ({ initialJobAds }) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const getStaticProps: GetStaticProps<InitialProps> = async () => {
|
export const getStaticProps: GetStaticProps<InitialProps> = async () => {
|
||||||
const { url } = generateFetchParams();
|
const initialJobAds = await JobAdApi.getJobAds();
|
||||||
const initialJobAds = await jobAdFetcher(url);
|
|
||||||
return {
|
return {
|
||||||
props: {
|
props: {
|
||||||
initialJobAds,
|
initialJobAds,
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
import breakpoints from "@theme/breakpoints";
|
import breakpoints from "@theme/breakpoints";
|
||||||
import { Event } from "@models/Event";
|
import Event from "@models/Event";
|
||||||
import { Post } from "@models/Feed";
|
import Post from "@models/Feed";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
Divider, CTASection, TextSection, Link, CrossFadeImages,
|
Divider, CTASection, TextSection, Link, CrossFadeImages,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { Event } from "@models/Event";
|
import Event from "@models/Event";
|
||||||
import Button from "@components/Button";
|
import Button from "@components/Button";
|
||||||
|
|
||||||
import { CardSection, Card, FullWidthSection } from "@components/index";
|
import { CardSection, Card, FullWidthSection } from "@components/index";
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { Post } from "@models/Feed";
|
import Post from "@models/Feed";
|
||||||
import Button from "@components/Button";
|
import Button from "@components/Button";
|
||||||
|
|
||||||
import { CardSection, Card, FullWidthSection } from "@components/index";
|
import { CardSection, Card, FullWidthSection } from "@components/index";
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import React from "react";
|
|||||||
import {
|
import {
|
||||||
CTASection, TextSection, PageLink, Link,
|
CTASection, TextSection, PageLink, Link,
|
||||||
} from "@components/index";
|
} from "@components/index";
|
||||||
import { JobAd } from "@models/JobAd";
|
import JobAd from "@models/JobAd";
|
||||||
import CorporatePageHero from "./CorporatePageHero";
|
import CorporatePageHero from "./CorporatePageHero";
|
||||||
import JobAdList from "./JobAdList";
|
import JobAdList from "./JobAdList";
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
import { JobAd } from "@models/JobAd";
|
import JobAd from "@models/JobAd";
|
||||||
import { Accordion } from "@components/index";
|
import { Accordion } from "@components/index";
|
||||||
import ReactMarkdown from "react-markdown";
|
import ReactMarkdown from "react-markdown";
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import React from "react";
|
|||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
import colors from "@theme/colors";
|
import colors from "@theme/colors";
|
||||||
import { Event } from "@models/Event";
|
import Event from "@models/Event";
|
||||||
import Button from "@components/Button";
|
import Button from "@components/Button";
|
||||||
import { Link, TextSection } from "@components/index";
|
import { Link, TextSection } from "@components/index";
|
||||||
import noop from "@utils/noop";
|
import noop from "@utils/noop";
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ import {
|
|||||||
CTASection,
|
CTASection,
|
||||||
Link,
|
Link,
|
||||||
} from "@components/index";
|
} from "@components/index";
|
||||||
import { Event } from "@models/Event";
|
import Event from "@models/Event";
|
||||||
import { Post } from "@models/Feed";
|
import Post from "@models/Feed";
|
||||||
import { colors } from "@theme/colors";
|
import { colors } from "@theme/colors";
|
||||||
|
|
||||||
import FullWidthSection from "@components/Sections/FullWidthSection";
|
import FullWidthSection from "@components/Sections/FullWidthSection";
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ import {
|
|||||||
PageLink,
|
PageLink,
|
||||||
TextSection,
|
TextSection,
|
||||||
} from "@components/index";
|
} from "@components/index";
|
||||||
import { Event } from "@models/Event";
|
import Event from "@models/Event";
|
||||||
import { Post } from "@models/Feed";
|
import Post from "@models/Feed";
|
||||||
import noop from "@utils/noop";
|
import noop from "@utils/noop";
|
||||||
import InEnglishPageHero from "./InEnglishPageHero";
|
import InEnglishPageHero from "./InEnglishPageHero";
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { Question } from "@components/Widgets/SignupQuestionsWidget/common";
|
import { Question } from "@components/Widgets/SignupQuestionsWidget/common";
|
||||||
import { SignupForm } from "@models/SignupForm";
|
import { SignupForm } from "@models/Signup";
|
||||||
import { EMAIL_REGEX } from "@utils/regexes";
|
import { EMAIL_REGEX } from "@utils/regexes";
|
||||||
import escapeRegExp from "lodash/escapeRegExp";
|
import escapeRegExp from "lodash/escapeRegExp";
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
import { IChangeEvent, ISubmitEvent, ErrorSchema } from "react-jsonschema-form";
|
import { IChangeEvent, ISubmitEvent, ErrorSchema } from "react-jsonschema-form";
|
||||||
import { SignupForm } from "@models/SignupForm";
|
import { SignupForm } from "@models/Signup";
|
||||||
import Checkboxes from "@components/Widgets/Checkbox/Checkboxes";
|
import Checkboxes from "@components/Widgets/Checkbox/Checkboxes";
|
||||||
import RadioButtonWidget from "@components/Widgets/RadioButton/RadioButtonWidget";
|
import RadioButtonWidget from "@components/Widgets/RadioButton/RadioButtonWidget";
|
||||||
import { TextSection } from "@components/index";
|
import { TextSection } from "@components/index";
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ import React from "react";
|
|||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
import { ISubmitEvent, IChangeEvent, ErrorSchema } from "react-jsonschema-form";
|
import { ISubmitEvent, IChangeEvent, ErrorSchema } from "react-jsonschema-form";
|
||||||
import { colors } from "@theme/colors";
|
import { colors } from "@theme/colors";
|
||||||
import { Event } from "@models/Event";
|
import Event from "@models/Event";
|
||||||
import { Post } from "@models/Feed";
|
import Post from "@models/Feed";
|
||||||
import { SignupForm } from "@models/SignupForm";
|
import { SignupForm } from "@models/Signup";
|
||||||
import { JobAd } from "@models/JobAd";
|
import JobAd from "@models/JobAd";
|
||||||
import FormWrapper from "@views/common/FormWrapper";
|
import FormWrapper from "@views/common/FormWrapper";
|
||||||
import AdminPageWrapper from "@views/common/AdminPageWrapper";
|
import AdminPageWrapper from "@views/common/AdminPageWrapper";
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,9 @@
|
|||||||
"typeRoots": ["types", "node_modules/@types"],
|
"typeRoots": ["types", "node_modules/@types"],
|
||||||
"baseUrl": "./",
|
"baseUrl": "./",
|
||||||
"paths": {
|
"paths": {
|
||||||
|
"@api/*": [
|
||||||
|
"src/api/*"
|
||||||
|
],
|
||||||
"@components/*": [
|
"@components/*": [
|
||||||
"src/components/*"
|
"src/components/*"
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in New Issue
Block a user