Skip to content

Commit d23cd30

Browse files
authored
Merge pull request #98 from WithTime12/develop
[Deploy] 배포
2 parents 13311b1 + c6fd58b commit d23cd30

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+1751
-267
lines changed

eslint.config.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import tsConfig from './eslint/typescript.mjs';
1010

1111
export default [
1212
{
13-
ignores: ['src/vite-env.d.ts'],
13+
ignores: ['src/vite-env.d.ts', 'public/firebase-messaging-sw.js'],
1414
},
1515
{
1616
files: ['**/*.{js,mjs,cjs,ts,jsx,tsx}'],

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
"chart.js": "^4.5.0",
2323
"chartjs-plugin-datalabels": "^2.2.0",
2424
"clsx": "^2.1.1",
25+
"firebase": "^12.0.0",
2526
"lodash": "^4.17.21",
2627
"lodash.throttle": "^4.1.1",
2728
"path": "^0.12.7",
@@ -30,7 +31,9 @@
3031
"react-chartjs-2": "^5.3.0",
3132
"react-dom": "^19.1.0",
3233
"react-hook-form": "^7.60.0",
34+
"react-intersection-observer": "^9.16.0",
3335
"react-router-dom": "^7.6.0",
36+
"react-spinners": "^0.17.0",
3437
"sonner": "^2.0.3",
3538
"tailwindcss": "^4.1.7",
3639
"wordcloud": "^1.2.3",

public/firebase-messaging-sw.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/// <reference lib="webworker" />
2+
/* eslint-env serviceworker */
3+
/* global firebase importScripts clients */
4+
importScripts('https://www.gstatic.com/firebasejs/10.13.2/firebase-app-compat.js');
5+
importScripts('https://www.gstatic.com/firebasejs/10.13.2/firebase-messaging-compat.js');
6+
7+
firebase.initializeApp({
8+
apiKey: 'AIzaSyAjZqK2lhCOeX_P2Sf-_2IGEFlORchcO5w',
9+
authDomain: 'withtime-ff471.firebaseapp.com',
10+
projectId: 'withtime-ff471',
11+
storageBucket: 'withtime-ff471.firebasestorage.app',
12+
messagingSenderId: '47995224236',
13+
appId: '1:47995224236:web:85371605ce4a6659529f09',
14+
measurementId: 'G-5E8Q23LL4H',
15+
});
16+
17+
const messaging = firebase.messaging();
18+
19+
self.addEventListener('push', function (event) {
20+
try {
21+
const payload = event.data.json();
22+
const title = payload.notification.title;
23+
24+
const options = {
25+
body: payload.notification.body,
26+
icon: payload.notification.icon,
27+
data: payload.notification.click_action,
28+
};
29+
30+
event.waitUntil(self.registration.showNotification(title, options));
31+
} catch (error) {
32+
console.error('Push event error:', error);
33+
}
34+
});
35+
36+
self.addEventListener('notificationclick', function (event) {
37+
console.log(event.notification);
38+
39+
event.notification.close();
40+
41+
event.waitUntil(clients.openWindow(event.notification.data).catch((error) => console.error('Failed to open window:', error)));
42+
});

src/App.css

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
@import url('https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard-dynamic-subset.css');
2+
3+
html, body, button, input, select, textarea {
4+
font-family: 'Pretendard',
5+
-apple-system, BlinkMacSystemFont, system-ui,
6+
'Segoe UI', Roboto, 'Helvetica Neue', Arial,
7+
'Noto Sans KR', 'Apple SD Gothic Neo', 'Malgun Gothic',
8+
'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
9+
sans-serif;
10+
}

src/api/alarm/alarm.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import type { TRequestGetAlarm, TRequestPostDeviceToken, TResponseGetAlarm, TResponsePostDeviceToken } from '@/types/alarm/alarm';
2+
3+
import { axiosInstance } from '@/api/axiosInstance';
4+
5+
export const getAlarm = async ({ size = 5, cursor }: TRequestGetAlarm): Promise<TResponseGetAlarm> => {
6+
const { data } = await axiosInstance.get('/api/v1/alarms', {
7+
params: {
8+
size,
9+
cursor,
10+
},
11+
});
12+
return data;
13+
};
14+
15+
export const postDeviceToken = async ({ deviceToken }: TRequestPostDeviceToken): Promise<TResponsePostDeviceToken> => {
16+
const { data } = await axiosInstance.post('/api/v1/alarms/device-tokens', { deviceToken });
17+
return data;
18+
};

src/api/auth/auth.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import type {
1313
TSocialLoginValues,
1414
} from '@/types/auth/auth';
1515

16-
import { axiosInstance } from '../axiosInstance';
16+
import { axiosInstance } from '@/api/axiosInstance';
1717

1818
export const defaultSignup = async ({ email, password, username, gender, phoneNumber, birth, socialId }: TSignupValues): Promise<TSignupResponse> => {
1919
const { data } = await axiosInstance.post('/api/v1/auth/sign-up', { email, password, socialId, username, gender, phoneNumber, birth });

src/api/course/course.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { TSearchRegionResponse, TSearchRegionValues } from '@/types/dateCourse/dateCourse';
22

3-
import { axiosInstance } from '../axiosInstance';
3+
import { axiosInstance } from '@/api/axiosInstance';
44

55
export const searchRegion = async ({ keyword }: TSearchRegionValues): Promise<TSearchRegionResponse> => {
66
const { data } = await axiosInstance.get('/api/v1/regions/search', {

src/api/home/dateCourse.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import type { TDateCourseSavedCountResponse } from '@/types/home/dateCourse';
2+
3+
import { axiosInstance } from '@/api/axiosInstance';
4+
5+
export const getDateCourseSavedCount = async (): Promise<TDateCourseSavedCountResponse> => {
6+
const { data } = await axiosInstance.get('/api/v1/logs/datecourses/saved-count');
7+
return data;
8+
};

src/api/home/dateTimes.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import type { TGetDateTimeStates, TMonthlyDatePlaceResponse } from '../../types/home/datePlace';
2+
3+
import { axiosInstance } from '@/api/axiosInstance';
4+
5+
// 월별 데이트 장소 수 조회 API
6+
export const getMonthlyDatePlaceStates = async (): Promise<TMonthlyDatePlaceResponse> => {
7+
const { data } = await axiosInstance.get('/api/v1/logs/dateplaces/monthly');
8+
return data;
9+
};
10+
11+
export const getDateTimeStates = async (): Promise<TGetDateTimeStates> => {
12+
const { data } = await axiosInstance.get('/api/v1/logs/datecourses/average');
13+
return data;
14+
};

src/api/home/keyword.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import type { TWeeklyKeywordResponse } from '@/types/home/keyword';
2+
3+
import { axiosInstance } from '@/api/axiosInstance';
4+
5+
// 이번 주 인기 키워드 조회 API
6+
export const getWeeklyKeywords = async (): Promise<TWeeklyKeywordResponse> => {
7+
const { data } = await axiosInstance.get('/api/v1/logs/keyword/weekly');
8+
return data;
9+
};

0 commit comments

Comments
 (0)