Skip to content
This repository was archived by the owner on Jul 8, 2024. It is now read-only.

Commit 8fb7907

Browse files
authored
Release: v1.0.5 릴리즈 (#102)
* refactor: 성공한 문제 id list를 storage에 저장 (#100) * Refactor: 유저의 이메일, 성공한 문제 id list storage를 get하는 로직 모듈화 (#101) * Refactor: 유저의 이메일, 성공한 문제 id list storage를 get하는 로직을 모듈화 * Release : v1.0.5 릴리즈
1 parent a705522 commit 8fb7907

File tree

10 files changed

+74
-51
lines changed

10 files changed

+74
-51
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "prosolve",
3-
"version": "1.0.4",
3+
"version": "1.0.5",
44
"main": "index.js",
55
"pretty": "prettier --write \"src/**/*.(ts|tsx)\"",
66
"scripts": {

src/api/solution/addSolvedProblemId.ts

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,18 @@
1-
import { getUserEmail } from './getUserEmail';
1+
import { getUserEmailStorage, getSuccessProblemsIdListStorage } from './getUserInfoStorage';
22

33
const addSolvedProblemId = async (id: number, isSuccess: boolean) => {
44
if (!isSuccess) return;
55

6-
const userEmail = await getUserEmail();
6+
const { userEmail } = await getUserEmailStorage();
7+
const solvedProblem = await getSuccessProblemsIdListStorage(userEmail);
78

8-
chrome.storage.local.get([userEmail], async response => {
9-
const solvedProblem = response[userEmail];
10-
console.log('[Pro-Solve] 제출한 풀이 Id List :>>', solvedProblem);
9+
if (solvedProblem.includes(id)) {
10+
console.log(`[Pro-Solve] 이전에 성공한 문제입니다. :>> ${id}`);
11+
return;
12+
}
1113

12-
if (solvedProblem.includes(id)) {
13-
console.log(`[Pro-Solve] 이전에 성공한 문제입니다. :>> ${id}`);
14-
return;
15-
}
16-
17-
chrome.storage.local.set({
18-
[userEmail]: [...solvedProblem, id],
19-
});
14+
return chrome.storage.local.set({
15+
[userEmail]: [...solvedProblem, id],
2016
});
2117
};
2218

src/api/solution/getUserEmail.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@ import { fetchRequest } from '@src/utils/fetchRequest';
33

44
const getUserEmail = async () => {
55
const { userInfo } = await fetchRequest({ url: USER_INFO_URL });
6-
if (userInfo === undefined) {
7-
return null;
8-
}
6+
if (userInfo === undefined) return;
97

108
const { email } = await userInfo;
119
return email;
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
const getUserEmailStorage = async () => chrome.storage.local.get('userEmail');
2+
3+
const getSuccessProblemsIdListStorage = async (userEmail: string) =>
4+
(await chrome.storage.local.get([userEmail]))[userEmail];
5+
6+
export { getUserEmailStorage, getSuccessProblemsIdListStorage };

src/api/solution/initSuccessProblems.ts

Lines changed: 0 additions & 16 deletions
This file was deleted.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { getUserEmail } from './getUserEmail';
2+
import { getSuccessProblemIdList } from './getSuccessProblemIdList';
3+
4+
const setUserInfoStorage = async () => {
5+
const userEmail = await setUserEmailStorage();
6+
await setSuccessProblemsIdListStorage(userEmail);
7+
};
8+
9+
const setUserEmailStorage = async () => {
10+
const newUserEmail = await getUserEmail();
11+
12+
await chrome.storage.local.set({
13+
userEmail: newUserEmail,
14+
});
15+
16+
return newUserEmail;
17+
};
18+
19+
const setSuccessProblemsIdListStorage = async (userEmail: string) => {
20+
console.log('[Pro-Solve] 현재 로그인한 프로그래머스 계정 이메일 :>> ', userEmail);
21+
22+
if (userEmail === undefined) return;
23+
const response = await chrome.storage.local.get([userEmail]);
24+
const solvedProblemsIdList = response[userEmail] ?? (await getSuccessProblemIdList());
25+
26+
return chrome.storage.local.set({
27+
[userEmail]: solvedProblemsIdList,
28+
});
29+
};
30+
31+
export { setUserInfoStorage };

src/pages/background/index.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,12 @@ import { postCurrentSolution } from './postCurrentSolution';
22
import { getAllSolutions } from './getAllSolutions';
33
import { createSolutionsTab } from './createSolutionsTab';
44
import { createSuccessProblemTab } from './createSuccessProblemTab';
5-
import { initSuccessProblems } from '@src/api/solution/initSuccessProblems';
5+
import { setUserInfoStorage } from '@src/api/solution/setUserInfoStorage';
66

7-
chrome.runtime.onInstalled.addListener(() => {
8-
initSuccessProblems();
9-
});
7+
chrome.runtime.onInstalled.addListener(() => setUserInfoStorage());
108

119
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
1210
const message = { request, sender, sendResponse };
13-
initSuccessProblems();
1411

1512
if (request.method === 'postCurrentSolution') {
1613
postCurrentSolution(message).catch(error => {

src/pages/content/testPage.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ import { theme } from '@src/styles/theme';
44
import { ThemeProvider } from 'styled-components';
55
import CreateSolutionsButton from '@src/components/button/CreateSolutionsButton';
66
import { addSolvedProblemId } from '@src/api/solution/addSolvedProblemId';
7+
import { setUserInfoStorage } from '@src/api/solution/setUserInfoStorage';
8+
9+
(async () => await setUserInfoStorage())();
710

811
const $submitBtn = document.querySelector('#submit-code') as HTMLButtonElement;
912
const $modal = document.querySelector('.modal') as HTMLDivElement;
@@ -21,9 +24,12 @@ const modalMutationObserver = new MutationObserver(mutations => {
2124
modalMutationObserver.disconnect();
2225
});
2326

24-
$submitBtn.addEventListener('click', () => {
25-
modalMutationObserver.observe($modal, modalMutationOption);
26-
});
27+
const isUserLoggedIn = $submitBtn !== null;
28+
if (isUserLoggedIn) {
29+
$submitBtn.addEventListener('click', () => {
30+
modalMutationObserver.observe($modal, modalMutationOption);
31+
});
32+
}
2733

2834
const printLoadingText = () => {
2935
const $modalContent = document.querySelector('div.modal-body') as HTMLDivElement;

src/pages/newTab/profile/index.tsx

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,11 @@ import { RecoilRoot, useRecoilValue } from 'recoil';
1919
import { navOption, sortOption } from '@src/store/profile';
2020
import Statistics from './Statistics';
2121
import Problems from './Problems';
22-
import { getUserEmail } from '@src/api/solution/getUserEmail';
22+
import { setUserInfoStorage } from '@src/api/solution/setUserInfoStorage';
23+
import {
24+
getUserEmailStorage,
25+
getSuccessProblemsIdListStorage,
26+
} from '@src/api/solution/getUserInfoStorage';
2327

2428
document.title = '프로솔브 - 나의 풀이 페이지';
2529

@@ -31,11 +35,18 @@ const ProfileTabLayout = () => {
3135

3236
React.useEffect(() => {
3337
(async () => {
38+
await setUserInfoStorage();
39+
40+
const { userEmail } = await getUserEmailStorage();
41+
console.log('[Pro-Solve] 현재 로그인한 이메일 :>> ', await userEmail);
42+
3443
const allProblems = await getAllProblemsList();
3544
setAllSolvedProblems(allProblems);
3645

37-
const solvedProblemIdList = await getSolvedProblemIdList();
38-
const solvedProblems = await getSolvedProblemList(allProblems, solvedProblemIdList);
46+
const solvedProblemsIdList = await getSuccessProblemsIdListStorage(userEmail);
47+
console.log('[Pro-Solve] 현재 유저가 성공한 문제 id list :>> ', await solvedProblemsIdList);
48+
49+
const solvedProblems = await getSolvedProblemList(allProblems, solvedProblemsIdList);
3950
setSolvedProblems(solvedProblems);
4051

4152
setIsLoaded(false);
@@ -70,12 +81,6 @@ const getAllProblemsList = async () =>
7081
url: ALL_PROBLEM_URL,
7182
});
7283

73-
const getSolvedProblemIdList = async () => {
74-
const userEmail = await getUserEmail();
75-
76-
return (await chrome.storage.local.get([userEmail]))[userEmail];
77-
};
78-
7984
const getSolvedProblemList = async (
8085
allProblems: SolvedProblemType,
8186
solvedProblemIdList: number[],

src/static/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "프로솔브(Pro-Solve)",
33
"description": "제출한 모든 프로그래머스 풀이를 확인할 수 있게 해주는 크롬 익스텐션",
4-
"version": "1.0.4",
4+
"version": "1.0.5",
55
"manifest_version": 3,
66
"icons": {
77
"16": "icon.png",

0 commit comments

Comments
 (0)