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

Commit 40ced6d

Browse files
Feature/asana integration (#273)
* Feature/posthog frontend (#242) * Create param validator * Move discord * Move user settings getter to app router * Use standard var * move getAllPublicUserData to app router * Better error handling * Delete getAllData.ts * Delete discord * Throw errors * Handle error throwing * Move updateSettings to app router * Update confluence.svg * Configure jest * Create settings.test.ts * Create updateSettings.test.ts * Add getting test * Use generalized validator * Move Stripe to app router * Move Sendgrid to app router * Move vscode to airtable Analytics to app router * Frontend analytics * Change export * Fix export * Fix export * Feature/posthog backend (#243) * Create param validator * Move discord * Move user settings getter to app router * Use standard var * move getAllPublicUserData to app router * Better error handling * Delete getAllData.ts * Delete discord * Throw errors * Handle error throwing * Move updateSettings to app router * Update confluence.svg * Configure jest * Create settings.test.ts * Create updateSettings.test.ts * Add getting test * Use generalized validator * Move Stripe to app router * Move Sendgrid to app router * Move vscode to airtable Analytics to app router * Create posthog.ts * Add types, move to utils * Capture posthog event * Change export * Fix export * Fix export * Check dev env * Move discord * Use standard var * Better error handling * Delete discord * Move Sendgrid to app router * Fix export * Upgrade routes to return 400 on missing params * Add status codes * Check status returned * Test settings getter * Feature/posthog frontend (#242) * Create param validator * Move discord * Move user settings getter to app router * Use standard var * move getAllPublicUserData to app router * Better error handling * Delete getAllData.ts * Delete discord * Throw errors * Handle error throwing * Move updateSettings to app router * Update confluence.svg * Configure jest * Create settings.test.ts * Create updateSettings.test.ts * Add getting test * Use generalized validator * Move Stripe to app router * Move Sendgrid to app router * Move vscode to airtable Analytics to app router * Frontend analytics * Change export * Fix export * Fix export * Feature/posthog backend (#243) * Create param validator * Move discord * Move user settings getter to app router * Use standard var * move getAllPublicUserData to app router * Better error handling * Delete getAllData.ts * Delete discord * Throw errors * Handle error throwing * Move updateSettings to app router * Update confluence.svg * Configure jest * Create settings.test.ts * Create updateSettings.test.ts * Add getting test * Use generalized validator * Move Stripe to app router * Move Sendgrid to app router * Move vscode to airtable Analytics to app router * Create posthog.ts * Add types, move to utils * Capture posthog event * Change export * Fix export * Fix export * Check dev env * Extract response types * Use responseTypes * Fix settings to use data response * Early return if no apiKey * Add error events * Remove event logging * Use request URL to pass to posthog * Extract tracking * Use tracker object * Move to route * Fix typo * Create route groups * Fix imports * Delete layout.tsx * Create AsanaLoginLink.tsx * Create guide to adding a new Oauth service * Add asana * Add asana * Add asana * Add SQL for new services * Add env vars sections * Update CONTRIBUTING.md * Add lang descriptors * Delete discord * Fix tracking * Fix import * Fix import * Roll back hover to dev * Fix tracking * Update CONTRIBUTING.md * Delete unused folder * v2.0.0 (#277) * Feature/posthog frontend (#242) (#262) * Feature/posthog frontend (#242) * Create param validator * Move discord * Move user settings getter to app router * Use standard var * move getAllPublicUserData to app router * Better error handling * Delete getAllData.ts * Delete discord * Throw errors * Handle error throwing * Move updateSettings to app router * Update confluence.svg * Configure jest * Create settings.test.ts * Create updateSettings.test.ts * Add getting test * Use generalized validator * Move Stripe to app router * Move Sendgrid to app router * Move vscode to airtable Analytics to app router * Frontend analytics * Change export * Fix export * Fix export * Feature/posthog backend (#243) * Create param validator * Move discord * Move user settings getter to app router * Use standard var * move getAllPublicUserData to app router * Better error handling * Delete getAllData.ts * Delete discord * Throw errors * Handle error throwing * Move updateSettings to app router * Update confluence.svg * Configure jest * Create settings.test.ts * Create updateSettings.test.ts * Add getting test * Use generalized validator * Move Stripe to app router * Move Sendgrid to app router * Move vscode to airtable Analytics to app router * Create posthog.ts * Add types, move to utils * Capture posthog event * Change export * Fix export * Fix export * Check dev env * Fix small grammar mistakes in the sys prompt (#263) * Fix small grammar mistakes in the sys prompt * Update getOpenAISummary.ts * Create ghapp page redirect (#264) * Update README.md Title (#265) * Create scorecard.yml * Change retention days from 5 to 7 * State that contribution is permisionless * Add OSSF scorecardbadge (#268) * Feature/finish api routes (#241) * Create param validator * Move discord * Move user settings getter to app router * Use standard var * move getAllPublicUserData to app router * Better error handling * Delete getAllData.ts * Delete discord * Throw errors * Handle error throwing * Move updateSettings to app router * Update confluence.svg * Configure jest * Create settings.test.ts * Create updateSettings.test.ts * Add getting test * Use generalized validator * Move Stripe to app router * Move Sendgrid to app router * Move vscode to airtable Analytics to app router * Change export * Fix export * Fix export * Upgrade routes to return 400 on missing params * Add status codes * Check status returned * Test settings getter * Feature/posthog frontend (#242) * Create param validator * Move discord * Move user settings getter to app router * Use standard var * move getAllPublicUserData to app router * Better error handling * Delete getAllData.ts * Delete discord * Throw errors * Handle error throwing * Move updateSettings to app router * Update confluence.svg * Configure jest * Create settings.test.ts * Create updateSettings.test.ts * Add getting test * Use generalized validator * Move Stripe to app router * Move Sendgrid to app router * Move vscode to airtable Analytics to app router * Frontend analytics * Change export * Fix export * Fix export * Feature/posthog backend (#243) * Create param validator * Move discord * Move user settings getter to app router * Use standard var * move getAllPublicUserData to app router * Better error handling * Delete getAllData.ts * Delete discord * Throw errors * Handle error throwing * Move updateSettings to app router * Update confluence.svg * Configure jest * Create settings.test.ts * Create updateSettings.test.ts * Add getting test * Use generalized validator * Move Stripe to app router * Move Sendgrid to app router * Move vscode to airtable Analytics to app router * Create posthog.ts * Add types, move to utils * Capture posthog event * Change export * Fix export * Fix export * Check dev env * Extract response types * Use responseTypes * Fix settings to use data response * Early return if no apiKey * Add error events * Remove event logging * Use request URL to pass to posthog * Extract tracking * Use tracker object * Move to route * Fix typo * Add missing params test * Fix/v2.0.0 merge conflicts (#278) * Feature/posthog frontend (#242) * Create param validator * Move discord * Move user settings getter to app router * Use standard var * move getAllPublicUserData to app router * Better error handling * Delete getAllData.ts * Delete discord * Throw errors * Handle error throwing * Move updateSettings to app router * Update confluence.svg * Configure jest * Create settings.test.ts * Create updateSettings.test.ts * Add getting test * Use generalized validator * Move Stripe to app router * Move Sendgrid to app router * Move vscode to airtable Analytics to app router * Frontend analytics * Change export * Fix export * Fix export * Feature/posthog backend (#243) * Create param validator * Move discord * Move user settings getter to app router * Use standard var * move getAllPublicUserData to app router * Better error handling * Delete getAllData.ts * Delete discord * Throw errors * Handle error throwing * Move updateSettings to app router * Update confluence.svg * Configure jest * Create settings.test.ts * Create updateSettings.test.ts * Add getting test * Use generalized validator * Move Stripe to app router * Move Sendgrid to app router * Move vscode to airtable Analytics to app router * Create posthog.ts * Add types, move to utils * Capture posthog event * Change export * Fix export * Fix export * Check dev env * Move discord * Use standard var * Better error handling * Delete discord * Move Sendgrid to app router * Fix export * Upgrade routes to return 400 on missing params * Add status codes * Check status returned * Test settings getter * Feature/posthog frontend (#242) * Create param validator * Move discord * Move user settings getter to app router * Use standard var * move getAllPublicUserData to app router * Better error handling * Delete getAllData.ts * Delete discord * Throw errors * Handle error throwing * Move updateSettings to app router * Update confluence.svg * Configure jest * Create settings.test.ts * Create updateSettings.test.ts * Add getting test * Use generalized validator * Move Stripe to app router * Move Sendgrid to app router * Move vscode to airtable Analytics to app router * Frontend analytics * Change export * Fix export * Fix export * Feature/posthog backend (#243) * Create param validator * Move discord * Move user settings getter to app router * Use standard var * move getAllPublicUserData to app router * Better error handling * Delete getAllData.ts * Delete discord * Throw errors * Handle error throwing * Move updateSettings to app router * Update confluence.svg * Configure jest * Create settings.test.ts * Create updateSettings.test.ts * Add getting test * Use generalized validator * Move Stripe to app router * Move Sendgrid to app router * Move vscode to airtable Analytics to app router * Create posthog.ts * Add types, move to utils * Capture posthog event * Change export * Fix export * Fix export * Check dev env * Extract response types * Use responseTypes * Fix settings to use data response * Early return if no apiKey * Add error events * Remove event logging * Use request URL to pass to posthog * Extract tracking * Use tracker object * Move to route * Fix typo * Create route groups * Fix imports * Delete layout.tsx * Delete discord * Use correct posthog * Fix hover * Update route.ts * Delete getContext.ts * delete unused folders --------- Co-authored-by: Esteban Vargas <estebanvargas94@gmail.com> * Update redirect.tsx * Fix/remove conflicting route (#280) * Update redirect.tsx * Delete getContext.ts * Remove discord * Fix file * Update redirect.tsx * Create saveUser.ts * Add required pages * Add workspace_name * Add asana info getter * add workspace_name * Fix returned values * Add asana info * Add asana * Add asana * Fix posthog (#285) * Feature/posthog frontend (#242) * Create param validator * Move discord * Move user settings getter to app router * Use standard var * move getAllPublicUserData to app router * Better error handling * Delete getAllData.ts * Delete discord * Throw errors * Handle error throwing * Move updateSettings to app router * Update confluence.svg * Configure jest * Create settings.test.ts * Create updateSettings.test.ts * Add getting test * Use generalized validator * Move Stripe to app router * Move Sendgrid to app router * Move vscode to airtable Analytics to app router * Frontend analytics * Change export * Fix export * Fix export * Move discord * Use standard var * Better error handling * Delete discord * Move Sendgrid to app router * Fix export * Upgrade routes to return 400 on missing params * Add status codes * Check status returned * Test settings getter * Feature/posthog frontend (#242) * Create param validator * Move discord * Move user settings getter to app router * Use standard var * move getAllPublicUserData to app router * Better error handling * Delete getAllData.ts * Delete discord * Throw errors * Handle error throwing * Move updateSettings to app router * Update confluence.svg * Configure jest * Create settings.test.ts * Create updateSettings.test.ts * Add getting test * Use generalized validator * Move Stripe to app router * Move Sendgrid to app router * Move vscode to airtable Analytics to app router * Frontend analytics * Change export * Fix export * Fix export * Feature/posthog backend (#243) * Create param validator * Move discord * Move user settings getter to app router * Use standard var * move getAllPublicUserData to app router * Better error handling * Delete getAllData.ts * Delete discord * Throw errors * Handle error throwing * Move updateSettings to app router * Update confluence.svg * Configure jest * Create settings.test.ts * Create updateSettings.test.ts * Add getting test * Use generalized validator * Move Stripe to app router * Move Sendgrid to app router * Move vscode to airtable Analytics to app router * Create posthog.ts * Add types, move to utils * Capture posthog event * Change export * Fix export * Fix export * Check dev env * Extract response types * Use responseTypes * Fix settings to use data response * Early return if no apiKey * Add error events * Remove event logging * Use request URL to pass to posthog * Extract tracking * Use tracker object * Move to route * Fix typo * Create route groups * Fix imports * Delete layout.tsx * Update route.ts * Update redirect.tsx * Update loading.tsx * Update page.tsx --------- Co-authored-by: Esteban Vargas <estebanvargas94@gmail.com>
1 parent 00206ec commit 40ced6d

12 files changed

Lines changed: 245 additions & 56 deletions

File tree

app/(loggedIn)/asana/loading.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import LoadingConnectedService from "../../../components/services/loading";
2+
3+
export default function loadingConnectedService() {
4+
return <LoadingConnectedService />;
5+
}

app/(loggedIn)/asana/page.tsx

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
import { getServerSession } from "next-auth";
2+
//change this to import correctly
3+
import saveUserInfo from "../../../utils/db/asana/saveUser";
4+
5+
import { authOptions } from "../../api/auth/[...nextauth]/route";
6+
import getAllPublicUserData from "../../../utils/api/getAllUserPublicData";
7+
8+
import ConnectedService from "../../../components/services/page";
9+
import LoginArray from "../../../components/services/loginArray";
10+
11+
export default async function ServicePage({
12+
searchParams,
13+
}: {
14+
searchParams: { [key: string]: string | string[] | undefined };
15+
}) {
16+
const session = await getServerSession(authOptions);
17+
const userEmail = session?.user?.email;
18+
const userName = session?.user?.name;
19+
const { code, state } = searchParams;
20+
let error = "";
21+
// change service name
22+
const serviceName = "Asana";
23+
const [userData, serviceToken] = await Promise.all([
24+
getAllPublicUserData({ email: userEmail }).catch((e) => {
25+
console.error(e);
26+
return null;
27+
}),
28+
// change this fetch
29+
30+
fetch(`https://app.asana.com/-/oauth_token`, {
31+
method: "POST",
32+
headers: {
33+
"Content-Type": "application/x-www-form-urlencoded",
34+
Accept: "application/json",
35+
},
36+
body: `grant_type=refresh_token&code=${code}redirect_uri=https://app.watermelontools.com/asana&client_id=${process.env.ASANA_CLIENT_ID}&client_secret=${process.env.ASANA_CLIENT_SECRET}`,
37+
}),
38+
]);
39+
40+
// the recommended services should not be of the same category as the current one
41+
const nameList = ["GitLab", "Slack", "Notion", "Confluence"];
42+
const loginArray = LoginArray({ nameList, userEmail, userData });
43+
44+
const json = await serviceToken.json();
45+
if (json.error) {
46+
error = json.error;
47+
} else {
48+
// get user correctly
49+
let user = await fetch(
50+
`https://app.asana.com/api/1.0/users/me?opt_fields=photo.image_128x128,workspaces,workspaces.name,photo`,
51+
{
52+
headers: {
53+
Authorization: `Bearer ${json.access_token}`,
54+
},
55+
}
56+
);
57+
let userJson = await user.json();
58+
// save user correctly
59+
await saveUserInfo({
60+
id: json.data.id,
61+
gid: json.data.gid,
62+
name: json.data.name,
63+
email: json.data.email,
64+
access_token: json.access_token,
65+
refresh_token: json.refresh_token,
66+
avatar_url: userJson.photo.image_128x128,
67+
workspace: userJson.workspaces[0].gid,
68+
workspace_name: userJson.workspaces[0].name,
69+
watermelon_user: state,
70+
});
71+
72+
return (
73+
<ConnectedService
74+
serviceName={serviceName}
75+
displayName={json.data.name}
76+
teamName={userJson.workspaces[0].name}
77+
avatarUrl={userJson.photo.image_128x128}
78+
loginArray={loginArray}
79+
error={error}
80+
/>
81+
);
82+
}
83+
}

app/api/actions/github/route.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import getSlack from "../../../../utils/actions/getSlack";
88
import getNotion from "../../../../utils/actions/getNotion";
99
import getLinear from "../../../../utils/actions/getLinear";
1010
import getConfluence from "../../../../utils/actions/getConfluence";
11+
import getAsana from "../../../../utils/actions/getAsana";
1112
import getOpenAISummary from "../../../../utils/actions/getOpenAISummary";
1213

1314
import countMarkdown from "../../../../utils/actions/markdownHelpers/count";
@@ -74,13 +75,16 @@ export async function POST(request: Request) {
7475
slack_token,
7576
notion_token,
7677
linear_token,
78+
asana_token,
79+
asana_workspace,
7780
AISummary,
7881
JiraTickets,
7982
GitHubPRs,
8083
SlackMessages,
8184
NotionPages,
8285
LinearTickets,
8386
ConfluencePages,
87+
AsanaTasks,
8488
user_email,
8589
watermelon_user,
8690
} = wmUserData;
@@ -329,6 +333,7 @@ export async function POST(request: Request) {
329333
slackValue,
330334
notionValue,
331335
linearValue,
336+
asanaValue,
332337
count,
333338
] = await Promise.all([
334339
getGitHub({
@@ -369,6 +374,13 @@ export async function POST(request: Request) {
369374
randomWords,
370375
amount: LinearTickets,
371376
}),
377+
getAsana({
378+
access_token: asana_token,
379+
user: user_email,
380+
randomWords,
381+
workspace: asana_workspace,
382+
amount: AsanaTasks,
383+
}),
372384
addActionCount({ watermelon_user }),
373385
]);
374386
textToWrite += `### WatermelonAI Summary \n`;
@@ -384,6 +396,7 @@ export async function POST(request: Request) {
384396
slackValue,
385397
notionValue,
386398
linearValue,
399+
asanaValue,
387400
},
388401
title,
389402
body,
@@ -441,6 +454,13 @@ export async function POST(request: Request) {
441454
systemName: "Linear",
442455
systemResponseName: "Linear Tickets",
443456
});
457+
textToWrite += generalMarkdownHelper({
458+
amount: AsanaTasks,
459+
value: asanaValue,
460+
userLogin,
461+
systemName: "Asana",
462+
systemResponseName: "Asana Tasks",
463+
});
444464
textToWrite += countMarkdown({
445465
count,
446466
isPrivateRepo: repository.private,
@@ -454,6 +474,7 @@ export async function POST(request: Request) {
454474
slackValue,
455475
notionValue,
456476
linearValue,
477+
asanaValue,
457478
textToWrite,
458479
businessLogicSummary,
459480
owner,

app/api/analytics/vsmarketplace/update/route.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { NextResponse } from "next/server";
22
import validateParams from "../../../../../utils/api/validateParams";
33
import Airtable from "airtable";
44
import { missingParamsResponse } from "../../../../../utils/api/responses";
5-
import posthog from "../../../../../utils/posthog/posthog";
5+
import { missingParamsPosthogTracking } from "../../../../../utils/api/posthogTracking";
66
Airtable.configure({
77
endpointUrl: "https://api.airtable.com",
88
apiKey: process.env.AIRTABLE_API_KEY,
@@ -33,10 +33,7 @@ export async function POST(request: Request) {
3333
const { missingParams } = validateParams(req, ["dailyStats"]);
3434

3535
if (missingParams.length > 0) {
36-
posthog.capture({
37-
event: `${request.url}-missing-params`,
38-
properties: missingParams,
39-
});
36+
missingParamsPosthogTracking({ missingParams, url: request.url });
4037
return missingParamsResponse({ missingParams });
4138
}
4239
const { dailyStats } = req;

app/api/extension/getContext/route.ts

Lines changed: 54 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
import executeRequest from "../../../../utils/db/azuredb";
1919
import getOpenAISummary from "../../../../utils/actions/getOpenAISummary";
2020
import { StandardProcessedDataArray } from "../../../../types/watermelon";
21+
import getAsana from "../../../../utils/actions/getAsana";
2122
function replaceSpecialChars(inputString) {
2223
const specialChars = /[!"#$%&/()=?_"{}¨*]/g; // Edit this list to include or exclude characters
2324
return inputString.toLowerCase().replace(specialChars, " ");
@@ -51,6 +52,8 @@ export async function POST(request: Request) {
5152
slack_token,
5253
notion_token,
5354
linear_token,
55+
asana_token,
56+
asana_workspace,
5457
user_email,
5558
AISummary,
5659
JiraTickets,
@@ -59,6 +62,7 @@ export async function POST(request: Request) {
5962
NotionPages,
6063
LinearTickets,
6164
ConfluencePages,
65+
AsanaTasks,
6266
} = wmUserData;
6367
try {
6468
wmUserData = await executeRequest(query);
@@ -86,45 +90,53 @@ export async function POST(request: Request) {
8690
.sort(() => Math.random() - 0.5)
8791
.slice(0, 6);
8892

89-
const [github, jira, confluence, slack, notion, linear] = await Promise.all([
90-
getGitHub({
91-
repo,
92-
owner,
93-
github_token,
94-
randomWords,
95-
amount: GitHubPRs,
96-
}),
97-
getJira({
98-
user: user_email,
99-
token: jira_token,
100-
refresh_token: jira_refresh_token,
101-
randomWords,
102-
amount: JiraTickets,
103-
}),
104-
getConfluence({
105-
token: confluence_token,
106-
refresh_token: confluence_refresh_token,
107-
cloudId: confluence_id,
108-
user: user_email,
109-
randomWords,
110-
amount: ConfluencePages,
111-
}),
112-
getSlack({
113-
slack_token,
114-
searchString: randomWords.join(" "),
115-
amount: SlackMessages,
116-
}),
117-
getNotion({
118-
notion_token,
119-
randomWords,
120-
amount: NotionPages,
121-
}),
122-
getLinear({
123-
linear_token,
124-
randomWords,
125-
amount: LinearTickets,
126-
}),
127-
]);
93+
const [github, jira, confluence, slack, notion, linear, asana] =
94+
await Promise.all([
95+
getGitHub({
96+
repo,
97+
owner,
98+
github_token,
99+
randomWords,
100+
amount: GitHubPRs,
101+
}),
102+
getJira({
103+
user: user_email,
104+
token: jira_token,
105+
refresh_token: jira_refresh_token,
106+
randomWords,
107+
amount: JiraTickets,
108+
}),
109+
getConfluence({
110+
token: confluence_token,
111+
refresh_token: confluence_refresh_token,
112+
cloudId: confluence_id,
113+
user: user_email,
114+
randomWords,
115+
amount: ConfluencePages,
116+
}),
117+
getSlack({
118+
slack_token,
119+
searchString: randomWords.join(" "),
120+
amount: SlackMessages,
121+
}),
122+
getNotion({
123+
notion_token,
124+
randomWords,
125+
amount: NotionPages,
126+
}),
127+
getLinear({
128+
linear_token,
129+
randomWords,
130+
amount: LinearTickets,
131+
}),
132+
getAsana({
133+
access_token: asana_token,
134+
user: user_email,
135+
randomWords,
136+
workspace: asana_workspace,
137+
amount: AsanaTasks,
138+
}),
139+
]);
128140
const WatermelonAISummary = await getOpenAISummary({
129141
commitList: searchStringSet.replace(/\r?\n|\r/g, "").split(","),
130142
values: {
@@ -134,6 +146,7 @@ export async function POST(request: Request) {
134146
slack: slack?.data,
135147
notion: notion?.data,
136148
linear: linear?.data,
149+
asana: asana?.data,
137150
},
138151
});
139152

@@ -155,6 +168,7 @@ export async function POST(request: Request) {
155168
slack: slack.fullData || slack.error,
156169
notion: notion.fullData || notion.error,
157170
linear: linear.fullData || linear.error,
171+
asana: asana.fullData || asana.error,
158172
watermelonSummary: standardWatermelonAISummary,
159173
},
160174
});
@@ -166,6 +180,7 @@ export async function POST(request: Request) {
166180
slack: slack.data || slack.error,
167181
notion: notion.data || notion.error,
168182
linear: linear.data || linear.error,
183+
asana: asana.data || asana.error,
169184
watermelonSummary: standardWatermelonAISummary,
170185
},
171186
});

app/api/hover/getHoverData/route.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import getSlack from "../../../../utils/actions/getSlack";
44
import getNotion from "../../../../utils/actions/getNotion";
55
import getLinear from "../../../../utils/actions/getLinear";
66
import getConfluence from "../../../../utils/actions/getConfluence";
7+
import getAsana from "../../../../utils/actions/getAsana";
78
import validateParams from "../../../../utils/api/validateParams";
89
import {
910
failedPosthogTracking,
@@ -44,6 +45,8 @@ export async function POST(request: Request) {
4445
slack_token,
4546
notion_token,
4647
linear_token,
48+
asana_token,
49+
asana_workspace,
4750
user_email,
4851
watermelon_user,
4952
} = wmUserData;
@@ -110,6 +113,13 @@ export async function POST(request: Request) {
110113
randomWords,
111114
amount: 1,
112115
}),
116+
getAsana({
117+
access_token: asana_token,
118+
user: user_email,
119+
randomWords,
120+
workspace: asana_workspace,
121+
amount: 1,
122+
}),
113123
]);
114124

115125
successPosthogTracking({

components/loginGrid.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,6 @@ function LoginGrid({ userEmail, data }) {
105105
}}
106106
>
107107
<h2 className="Subhead-heading">{typeToName[type]}</h2>
108-
109108
</div>
110109
<div
111110
style={{

components/redirect.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import { useEffect, useState } from "react";
33

44
export default function TimeToRedirect({ url }) {
5-
const [timeToRedirect, setTimeToRedirect] = useState(10);
5+
const [timeToRedirect, setTimeToRedirect] = useState(9);
66

77
useEffect(() => {
88
const interval = setInterval(() => {

0 commit comments

Comments
 (0)