Skip to content

Commit d95e3e8

Browse files
committed
discussion page scroll UX, invitation fix
1 parent 172775e commit d95e3e8

File tree

7 files changed

+57
-50
lines changed

7 files changed

+57
-50
lines changed

saas/api/server/google-auth.ts

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ function setupGoogle({ server }) {
1111
return;
1212
}
1313

14-
const verify = async (accessToken, refreshToken, profile, done) => {
14+
const verify = async (req, accessToken, refreshToken, profile, done) => {
1515
let email;
1616
let avatarUrl;
1717

@@ -32,6 +32,13 @@ function setupGoogle({ server }) {
3232
avatarUrl,
3333
});
3434

35+
if (user && req.session.invitationToken) {
36+
await Invitation.addUserToTeam({
37+
token: req.session.invitationToken,
38+
user,
39+
}).catch((err) => console.error(err));
40+
}
41+
3542
done(null, user);
3643
} catch (err) {
3744
done(err);
@@ -45,6 +52,7 @@ function setupGoogle({ server }) {
4552
clientID: process.env.GOOGLE_CLIENTID,
4653
clientSecret: process.env.GOOGLE_CLIENTSECRET,
4754
callbackURL: `${dev ? process.env.URL_API : process.env.PRODUCTION_URL_API}/oauth2callback`,
55+
passReqToCallback: true,
4856
},
4957
verify,
5058
),
@@ -84,31 +92,10 @@ function setupGoogle({ server }) {
8492
failureRedirect: '/login',
8593
}),
8694
async (req, res) => {
87-
let teamSlugOfInvitedTeam;
88-
89-
if (req.user && req.session.invitationToken) {
90-
teamSlugOfInvitedTeam = await Invitation.addUserToTeam({
91-
token: req.session.invitationToken,
92-
user: req.user,
93-
}).catch((err) => console.error(err));
94-
95-
req.session.invitationToken = null;
96-
}
97-
98-
let redirectUrlAfterLogin;
99-
100-
// console.log(req.user.defaultTeamSlug, teamSlugOfInvitedTeam);
101-
102-
if (req.user && teamSlugOfInvitedTeam) {
103-
redirectUrlAfterLogin = `/teams/${teamSlugOfInvitedTeam}/discussions`;
104-
} else if (req.user && !teamSlugOfInvitedTeam && req.user.defaultTeamSlug) {
105-
redirectUrlAfterLogin = `/teams/${req.user.defaultTeamSlug}/discussions`;
106-
} else if (req.user && !teamSlugOfInvitedTeam && !req.user.defaultTeamSlug) {
107-
redirectUrlAfterLogin = `/create-team`;
108-
}
109-
11095
res.redirect(
111-
`${dev ? process.env.URL_APP : process.env.PRODUCTION_URL_APP}${redirectUrlAfterLogin}`,
96+
`${dev ? process.env.URL_APP : process.env.PRODUCTION_URL_APP}/teams/${
97+
req.user.defaultTeamSlug
98+
}/your-settings`,
11299
);
113100
},
114101
);

saas/api/server/passwordless-auth.ts

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -89,31 +89,21 @@ function setupPasswordless({ server }) {
8989
}
9090
},
9191
async (req, res) => {
92-
let teamSlugOfInvitedTeam;
9392

9493
if (req.user && req.session.invitationToken) {
95-
teamSlugOfInvitedTeam = await Invitation.addUserToTeam({
94+
await Invitation.addUserToTeam({
9695
token: req.session.invitationToken,
9796
user: req.user,
9897
}).catch((err) => console.error(err));
9998

10099
req.session.invitationToken = null;
101100
}
102101

103-
let redirectUrlAfterLogin;
104-
105102
// console.log(req.user.defaultTeamSlug, teamSlugOfInvitedTeam);
106-
107-
if (req.user && teamSlugOfInvitedTeam) {
108-
redirectUrlAfterLogin = `/teams/${teamSlugOfInvitedTeam}/discussions`;
109-
} else if (req.user && !teamSlugOfInvitedTeam && req.user.defaultTeamSlug) {
110-
redirectUrlAfterLogin = `/teams/${req.user.defaultTeamSlug}/discussions`;
111-
} else if (req.user && !teamSlugOfInvitedTeam && !req.user.defaultTeamSlug) {
112-
redirectUrlAfterLogin = `/create-team`;
113-
}
114-
115103
res.redirect(
116-
`${dev ? process.env.URL_APP : process.env.PRODUCTION_URL_APP}${redirectUrlAfterLogin}`,
104+
`${dev ? process.env.URL_APP : process.env.PRODUCTION_URL_APP}/teams/${
105+
req.user.defaultTeamSlug
106+
}/your-settings`,
117107
);
118108
},
119109
);

saas/app/components/layout/index.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ const styleGrid = {
2121
height: '100vh',
2222
maxWidth: '100%',
2323
padding: '0px 10px',
24+
display: 'flex',
2425
overflow: 'hidden',
2526
};
2627

@@ -29,6 +30,7 @@ const styleGridIsMobile = {
2930
height: '100vh',
3031
maxWidth: '100%',
3132
padding: '0px 0px 0px 10px',
33+
display: 'flex',
3234
overflow: 'hidden',
3335
};
3436

@@ -62,7 +64,8 @@ function LayoutWrapper({
6264
style={{
6365
borderRight: '1px #707070 solid',
6466
justifyContent: 'center',
65-
height: '100vh',
67+
height: '100%',
68+
overflow: 'hidden',
6669
}}
6770
>
6871
<div style={{ display: 'flex', justifyContent: 'space-between' }}>
@@ -204,7 +207,7 @@ class Layout extends React.Component<Props> {
204207
item
205208
sm={10}
206209
xs={12}
207-
style={{ padding: '0px 35px', overflow: 'auto', minHeight: '100%' }}
210+
style={{ padding: '0px 35px', overflow: 'auto', height: 'auto' }}
208211
>
209212
<div style={{ padding: '20px' }}>
210213
Select existing team or create a new team.
@@ -226,7 +229,7 @@ class Layout extends React.Component<Props> {
226229
item
227230
sm={10}
228231
xs={12}
229-
style={{ padding: '0px 35px', overflow: 'auto', minHeight: '100%' }}
232+
style={{ padding: '0px 35px', overflow: 'auto', height: 'auto' }}
230233
>
231234
{children}
232235
</Grid>
@@ -241,7 +244,7 @@ class Layout extends React.Component<Props> {
241244
item
242245
sm={firstGridItem ? 10 : 12}
243246
xs={12}
244-
style={{ padding: '0px 35px', overflow: 'auto', minHeight: '100%' }}
247+
style={{ padding: '0px 35px', overflowY: 'auto', height: 'auto' }}
245248
>
246249
<div>
247250
{isMobile || store.currentUrl.includes('create-team') ? null : (

saas/app/pages/_document.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ function MyDocument({ __NEXT_DATA__ }: { __NEXT_DATA__: any }) {
3333

3434
<style>
3535
{`
36+
#__next {
37+
width: 100%;
38+
height: 100%;
39+
}
3640
a {
3741
font-weight: 400;
3842
color: #58a6ff;

saas/app/pages/discussion.tsx

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ type Props = {
2323
isServer: boolean;
2424
isMobile: boolean;
2525
firstGridItem: boolean;
26+
teamRequired: boolean;
2627
};
2728

2829
function DiscussionPageCompFunctional({
@@ -32,6 +33,7 @@ function DiscussionPageCompFunctional({
3233
isServer,
3334
isMobile,
3435
firstGridItem,
36+
teamRequired,
3537
}: Props) {
3638
const [selectedPost, setSelectedPost] = useState<Post>(null);
3739
const [showMarkdownClicked, setShowMarkdownClicked] = useState<boolean>(false);
@@ -213,7 +215,12 @@ function DiscussionPageCompFunctional({
213215

214216
if (!currentTeam || currentTeam.slug !== teamSlug) {
215217
return (
216-
<Layout store={store} isMobile={isMobile} firstGridItem={firstGridItem}>
218+
<Layout
219+
store={store}
220+
isMobile={isMobile}
221+
firstGridItem={firstGridItem}
222+
teamRequired={teamRequired}
223+
>
217224
<Head>
218225
<title>No Team is found.</title>
219226
</Head>
@@ -227,7 +234,12 @@ function DiscussionPageCompFunctional({
227234
if (!discussion) {
228235
if (currentTeam.isLoadingDiscussions) {
229236
return (
230-
<Layout store={store} isMobile={isMobile} firstGridItem={firstGridItem}>
237+
<Layout
238+
store={store}
239+
isMobile={isMobile}
240+
firstGridItem={firstGridItem}
241+
teamRequired={teamRequired}
242+
>
231243
<Head>
232244
<title>Loading...</title>
233245
</Head>
@@ -238,7 +250,12 @@ function DiscussionPageCompFunctional({
238250
);
239251
} else {
240252
return (
241-
<Layout store={store} isMobile={isMobile} firstGridItem={firstGridItem}>
253+
<Layout
254+
store={store}
255+
isMobile={isMobile}
256+
firstGridItem={firstGridItem}
257+
teamRequired={teamRequired}
258+
>
242259
<Head>
243260
<title>No Discussion is found.</title>
244261
</Head>
@@ -253,11 +270,16 @@ function DiscussionPageCompFunctional({
253270
const title = discussion ? `${discussion.name} · Discussion` : 'Discussions';
254271

255272
return (
256-
<Layout store={store} isMobile={isMobile} firstGridItem={firstGridItem}>
273+
<Layout
274+
store={store}
275+
isMobile={isMobile}
276+
firstGridItem={firstGridItem}
277+
teamRequired={teamRequired}
278+
>
257279
<Head>
258280
<title>{title}</title>
259281
</Head>
260-
<div style={{ padding: isMobile ? '0px' : '0px 30px' }}>
282+
<div style={{ padding: isMobile ? '0px' : '0px 30px', height: '100vh' }}>
261283
<h4>
262284
<span style={{ fontWeight: 300 }}>Discussion : </span>
263285
{(discussion && discussion.name) || 'No Discussion is found.'}

saas/app/pages/your-settings.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,6 @@ function YourSettings({ store, isMobile, firstGridItem, teamRequired }: Props) {
142142
<div
143143
style={{
144144
padding: isMobile ? '0px' : '0px 30px',
145-
fontSize: '15px',
146145
height: '100%',
147146
}}
148147
>

saas/app/server/server.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,9 @@ app.prepare().then(() => {
7777
app.render(req, res, '/login');
7878
});
7979

80-
// token for invitation page
80+
server.get('/invitation', (req, res) => {
81+
app.render(req, res, '/invitation', { token: req.query.token as string });
82+
});
8183

8284
setupSitemapAndRobots({ server });
8385

0 commit comments

Comments
 (0)