Skip to content

Commit 7ad0a61

Browse files
committed
add LeetCode component after user logged in
1 parent 79745b3 commit 7ad0a61

File tree

6 files changed

+51
-12
lines changed

6 files changed

+51
-12
lines changed

jupyterlab_leetcode/handlers/cookie_handler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def get(self):
6060
)
6161
self.add_header(
6262
"Set-Cookie",
63-
f"leetcode_browser={browser}; Path=/; HttpOnly; Max-Age={max_age}",
63+
f"leetcode_browser={browser}; Path=/; Max-Age={max_age}",
6464
)
6565

6666
self.finish(json.dumps(resp))

src/components/BrowserCookie.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@ import React, { useEffect, useState } from 'react';
22
import { getCookie } from '../services/cookie';
33
import Bowser from 'bowser';
44

5-
const BrowserCookie = ({ onSuccess }: { onSuccess: () => void }) => {
5+
const BrowserCookie = ({
6+
setCookieLoggedIn
7+
}: {
8+
setCookieLoggedIn: (b: string) => void;
9+
}) => {
610
const browsers = [
711
'Chrome',
812
'Firefox',
@@ -40,9 +44,9 @@ const BrowserCookie = ({ onSuccess }: { onSuccess: () => void }) => {
4044

4145
useEffect(() => {
4246
if (checked) {
43-
onSuccess();
47+
setCookieLoggedIn(browser);
4448
}
45-
}, [checked, onSuccess]);
49+
}, [checked, setCookieLoggedIn]);
4650

4751
const checkCookie = () => {
4852
// TODO: change alert

src/components/LandingPage.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
import React from 'react';
22
import BrowserCookie from './BrowserCookie';
33

4-
const LandingPage = ({ onLoginSuccess }: { onLoginSuccess: () => void }) => {
5-
const options: JSX.Element[] = [<BrowserCookie onSuccess={onLoginSuccess} />];
4+
const LandingPage = ({
5+
setCookieLoggedIn
6+
}: {
7+
setCookieLoggedIn: (b: string) => void;
8+
}) => {
9+
const options: JSX.Element[] = [
10+
<BrowserCookie setCookieLoggedIn={setCookieLoggedIn} />
11+
];
612
return (
713
<div>
814
<p>Welcome to JupyterLab LeetCode Widget.</p>

src/components/LeetCode.tsx

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import React, { useState } from 'react';
2+
3+
const LeetCode = () => {
4+
const [_username, _setUsername] = useState('');
5+
6+
// useEffect(() => {}, []);
7+
8+
return (
9+
<div>
10+
<p>Welcome username</p>
11+
</div>
12+
);
13+
};
14+
15+
export default LeetCode;

src/index.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@ import { ICommandPalette, WidgetTracker } from '@jupyterlab/apputils';
77

88
import LeetCodeWidget from './widget';
99

10+
const PLUGIN_ID = 'jupyterlab-leetcode:plugin';
11+
1012
/**
1113
* Initialization data for the jupyterlab-leetcode extension.
1214
*/
1315
const plugin: JupyterFrontEndPlugin<void> = {
14-
id: 'jupyterlab-leetcode:plugin',
16+
id: PLUGIN_ID,
1517
description: 'Integrate LeetCode into beloved Jupyter.',
1618
autoStart: true,
1719
requires: [ICommandPalette],

src/widget.tsx

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,25 @@
11
import { ReactWidget } from '@jupyterlab/ui-components';
2-
import React, { StrictMode, useState } from 'react';
2+
import React, { StrictMode, useEffect, useState } from 'react';
33
import LandingPage from './components/LandingPage';
4+
import LeetCode from './components/LeetCode';
45

56
const LeetCodeComponent = (): JSX.Element => {
6-
const [isLoggedIn, setIsLoggedIn] = useState(false);
7-
return isLoggedIn ? (
8-
<div></div>
7+
const [cookieLoggedIn, setCookieLoggedIn] = useState('');
8+
9+
useEffect(() => {
10+
const leetcode_browser = document.cookie
11+
.split('; ')
12+
.find(cookie => cookie.startsWith('leetcode_browser='))
13+
?.split('=')[1];
14+
if (leetcode_browser) {
15+
setCookieLoggedIn(leetcode_browser);
16+
}
17+
}, []);
18+
19+
return cookieLoggedIn ? (
20+
<LeetCode />
921
) : (
10-
<LandingPage onLoginSuccess={() => setIsLoggedIn(true)} />
22+
<LandingPage setCookieLoggedIn={b => setCookieLoggedIn(b)} />
1123
);
1224
};
1325

0 commit comments

Comments
 (0)