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

Commit dacc85f

Browse files
Feature/login to service in app router (#218)
* send correct props * Add notion back * Add notion querying * Add logging of result * Fix getting of issue comments * correctly pass props to notion (#179) * correctly pass props to notion * Update README.md * fix undefined id error * Fix logging * Add better error logging * Fix error due to no notion version * Fix result returning * add logging * Fix logging * Add notion to settings * Add notion to app * fix newline * Remove extra character * Add page image support * fix title * fix image display * fix no token error * Filter out private messages * Allow getting less than standard results * Create getHoverData.ts * fix token passing * Fix typo * Now uses commitTitle * Add new users to Sendgrid contact list * Scrub action for app * Fixes to slack matches * Fix/remove action (#178) * Delete watermelon.yml * Change dropdown link * Change login link * Change dashboard link * small fixes * Move text writers to helpers * Fix comment editing * Export helpers * Add necessary imports * Change logging * Add non-registered user response * Earlier counting of action uses * reduce logging * Add counting to comment * Add error checking * Add check for open repos * Add error writing * Extract count markdown * Fix/typings improvements (#183) * Add typings * Fix possible nulls * Add LoginGridProps type * Fix possible null * remove breaklines * Add export * Add import * Update README.md, add title (#180) * Update README.md, add title * Update README.md * Update README.md * Update README.md (#181) * Chore/codebase typings and nulls (#185) * Allow max to be 5 * check nulls * add typings * fix possible null * Add typings * Add linear link for oauth * Feature/linear (#186) * Allow max to be 5 * Create linear.tsx * Feature/linear (#187) * Allow max to be 5 * Create linear.tsx * Update linear.tsx * Add logging * improve logging * Fix linear link * Change encoding of request * Fix body of request * Fix userquery * Save user, pass team name * remove unused code * logging * try text * Create LinearLoginLink.tsx * Try new body * Update linear.tsx * Fix logo * Create linear.svg * add content type * Add linear * try fix * Fix data matching * Fix team * Removed unused link * Fix email * Feature/team and navbar (#182) * add server-only * add client-only * Move to RSC * remove logging * fix typings * fix typings * add LoginGridProps * Fix possibly null * Add types * Check nulls * fix possible nulls * ignore errors in lightly used api * Set conditionally * Check null * check null * fix typings * fix null errors * fix null * add typings * fix props passing * Add typing * Add typing * fix typings * Fix typing errors * use nonnull assertion * Add styles * Move to app folder * Adhere to app api route * Make it non default * upgrade next-auth * restore session provider * Fixes in adapter * move auth to pages to test use * Fix login route * fix import * Pass authprovider * Added sidebar test * Add sidebar * Fix navbar, extract navbar * Fix layout * Hide elements if no session * Update Navbar.tsx * Fix layout * Make app dark * Extract form * Extract navbar * Move to app * Move layout out * Remove logging * REmove logging * Move logingrid to RSC * Remove logingrid * Add layout * Remove logging * Remove logging * Create getTeammates.ts * Create Team page * Fix heading * Delete github.tsx * Move to App router * Update README.md, add title (#180) * Update README.md, add title * Update README.md * Update README.md * Update README.md (#181) * Move to RSC * Fix Try app ui * Remove data logging * Make card details a page * Move layout to master layout * Fix type * Fix layout order * Remove billing link * log response * Move back to pages * Add search params to billing page * Create loading.tsx * Get settings on load * Adde repo owner and number to charge * Pass number from param * Force prompt * fix params * Add payment success page * Add billing link to navbar * Remove text that explains repo and seats in Card Elements * Add texts that explains purchase amount * Add linear to form (#190) * Add linear to form * Add Linear to query * Create getLinear.ts * Add linear fetching * Change query to add limit * Add logging * Fix search terms * Improve logging * Update linear.ts * Add linear to app (#192) * Create linear.ts * add no token handling * Check nulls * Fix search terms * export module * Naming fixes * manage empty results * Fix text * Fix newline * Code fixes * Fix undefined team count * Add teammates (#193) * Add button * Code cleanup * Create page.tsx * Execute request on landing * fix empty teammates * fix null teammates * add logging * better logging * Fix params * Rmove logging * Get team and copy to clipboard * paralelize requests, shorten code * send correct object * Add interaction * Add plaintext to copy * Fix url * Create loading.tsx * Check for data before render * Add catch to data fetch * Fix return * Update layout.tsx * Update loading.tsx * Update loading.tsx * Update loading.tsx * Move app link up * fix button text * Glow up * Create loading.tsx * Change email to info * Create sendTeammateInvite.ts * Add emailer form * Fix template id * Fix sending handler * Move to API call * Update sendInviteForm.tsx * Update sendTeammateInvite.ts * Cleanup * Create loading.tsx * Remove params * Feature/save gh response (#194) * Add saving query * fix randomwords * Improve logging * stringify responses * Check nulls * Fix count number in log saving * Correct wm user * Extract to function (#196) * Create addActionLog.ts * Use extracted method * Reduce file size * Remove logging * Reorg imports (#197) * Reorg imports * Update github.ts * Update github.ts * Feature/extract gh action loggin (#198) * Create addActionLog.ts * Use extracted method * Reduce file size * Remove logging * fix id for team * Fix saved string * Feature/extract gh action loggin (#200) * Create addActionLog.ts * Use extracted method * Reduce file size * Remove logging * fix id for team * Fix saved string * Add replacing of apostrophe to fix query * add \n to AI summary error (#199) * add \n to AI summary error * Update github.ts * Feature/extract gh action logging (#202) * Feature/page titles (#203) * Delete sidebar.tsx (#201) * Feature/posthog analytics (#204) * Add posthogjs * Create providers.tsx * Add posthog * Add posthognode * Create posthogTracker.ts * Add tracker to gh action * make posthog early * fix list filtering * Rename tracker * Add tracker * Add tracker * Streamline data fetching * Add tracker * Feature/confluence login (#206) * Create ConfluenceLoginLink.tsx * Add confluence * Create atlassian page * Remove primer * Add primer * change link * Fix link * fix link, text * Emergency removal of posthog * REmove all posthog instances * Correct redirect uri * better logging * Update atlassian.tsx * conditionally add pic * add logging * Add discrimination to jira and confluence * Save confluence * fix link * Fix img * debug logging * Fix query * Debug logging * change grant typ * Go back a grant type * change logging * Fix url * Some more data wrangling * fix saving * Fix image * Reorg dashboard * Add coming soon ides * Style navbar better * Make sidebar sticky, add logout button * Add workspace query * Ignore name * Remove unused code * ignore calling * try other import to release * Move email to client * Change logging * fix obj accessing * Add workspace, request emails * Add email, optimize requests * fix query * Get refresh token on login * Add confluence * Improve logging * reduce logging * Better logging * Create confluence.ts * Add confluence * Fix value * Create confluence.ts * Add logging * logging * Check if null * Fix nulls * Change how tokens are updated * Rename * Fixes to query executing * Rename action * Fixes and error handling * Fix missing param * Add offline access scope * Several fixes to tokens * Logging improvements * Delete test Api * Reduce throwing * Print full payload in this repo * Stringify full response * Remove data dumping * Change pricing calculation and text to * Update README.md (#207) * Update README.md * Update README.md * Update README.md * Update README.md * Feature/confluence settings (#211) * Make all unlogged services lose title * Create watermelon.ts * Use standard type * use standard types * Use standard types * Create general case helper * Make code more readable * Allow number to be a string, like a slack channel * Add possible body * Standardize helpers * Remove unused helpers * Add possible image element * Remove unused code * use standard response * remove logging, fix text * Fix token errors in confluence * Better responses on success and failure * Check nulls * Add max results * Add limit using amount * create StandardAPIInput * Fix type * Create OptionDropdown component * Change to max 5 * Fix code * Make it component based, add confluence * Remove component unused * Fix loading page * Feature/standard api responses (#209) * Make all unlogged services lose title * Create watermelon.ts * Use standard type * use standard types * Use standard types * Create general case helper * Make code more readable * Allow number to be a string, like a slack channel * Add possible body * Standardize helpers * Remove unused helpers * Add possible image element * Remove unused code * use standard response * remove logging, fix text * Fix token errors in confluence * Better responses on success and failure * Check nulls * Add max results * Add limit using amount * create StandardAPIInput * Fix type * Create OptionDropdown component * Change to max 5 * Fix code * Removed unused element * Reduce code size * Add confluence * Reduce code * Further reduce code * Remove unneeded brackets * Fix links (#215) * Create LICENSE (#216) Adding an Apache 2.0 license with a Commons clause to this repo to be able to make it source-available and become a buyer based open core company * Feature/all uses approuter (#217) * Use const instead of let * Change to app router * export page * Fix redirect with client component * redirect instead of opening new window * Test suggesting other services * Fix file * fix json * Fix suggestions UI * Correctly use ternary * Fix small error * Create loading.tsx * standardize token name * Standardize service name * Move gitlab to approuter * Move github to approuter * Standardize name * Add comments * Remove page replication * Move notion to approuter * Move slack to approuter * Move bitbucket to approuter * Create general page component * Use component page * Use component page * Remove unused imports * Ignore fleet * Fix username * Move Jira to App router * Move Discord to App Router * Move Atlassian to App Router * Create general loginArray function * Remove conflicting files --------- Co-authored-by: baristaGeek <estebanvargas94@gmail.com>
1 parent 1e7b1a3 commit dacc85f

4 files changed

Lines changed: 22 additions & 462 deletions

File tree

app/linear/page.tsx

Lines changed: 22 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,14 @@
1-
import Link from "next/link";
21
import { getServerSession } from "next-auth";
3-
2+
//change this to import correctly
43
import saveUserInfo from "../../utils/db/linear/saveUser";
54

65
import { authOptions } from "../api/auth/[...nextauth]/route";
7-
import TimeToRedirect from "../../components/redirect";
86
import getAllPublicUserData from "../../utils/api/getAllUserPublicData";
97

10-
import SlackLoginLink from "../../components/SlackLoginLink";
11-
import NotionLoginLink from "../../components/NotionLoginLink";
12-
import ConfluenceLoginLink from "../../components/ConfluenceLoginLink";
13-
import GitHubLoginLink from "../../components/GitHubLoginLink";
8+
import ConnectedService from "../../utils/services/page";
9+
import LoginArray from "../../utils/services/loginArray";
1410

15-
export default async function Linear({
11+
export default async function ServicePage({
1612
searchParams,
1713
}: {
1814
searchParams: { [key: string]: string | string[] | undefined };
@@ -22,12 +18,14 @@ export default async function Linear({
2218
const userName = session?.user?.name;
2319
const { code, state } = searchParams;
2420
let error = "";
25-
26-
const [userData, linearToken] = await Promise.all([
21+
// change service name
22+
const serviceName = "Linear";
23+
const [userData, serviceToken] = await Promise.all([
2724
getAllPublicUserData({ userEmail }).catch((e) => {
2825
console.error(e);
2926
return null;
3027
}),
28+
// change this fetch
3129
fetch(`https://api.linear.app/oauth/token`, {
3230
method: "POST",
3331
headers: {
@@ -38,35 +36,11 @@ export default async function Linear({
3836
}),
3937
]);
4038

41-
const services = [
42-
{
43-
name: "GitHub",
44-
dataProp: "github_data",
45-
loginComponent: <GitHubLoginLink userEmail={userEmail} />,
46-
},
47-
{
48-
name: "Slack",
49-
dataProp: "slack_data",
50-
loginComponent: <SlackLoginLink userEmail={userEmail} />,
51-
},
52-
{
53-
name: "Confluence",
54-
dataProp: "confluence_data",
55-
loginComponent: <ConfluenceLoginLink userEmail={userEmail} />,
56-
},
57-
{
58-
name: "Notion",
59-
dataProp: "notion_data",
60-
loginComponent: <NotionLoginLink userEmail={userEmail} />,
61-
},
62-
];
63-
const loginArray = services
64-
.map((service) =>
65-
userData?.[service.dataProp] ? null : service.loginComponent
66-
)
67-
.filter((component) => component !== null);
39+
// the recommended services should not be of the same category as the current one
40+
const nameList = ["GitHub", "Slack", "Notion", "Confluence"];
41+
const loginArray = LoginArray({ nameList, userEmail, userData });
6842

69-
const json = await linearToken.json();
43+
const json = await serviceToken.json();
7044
if (json.error) {
7145
error = json.error;
7246
} else {
@@ -75,6 +49,7 @@ export default async function Linear({
7549
"query Me {\nviewer {\n id,\n name,\n displayName, email,\n avatarUrl\n},\nteams {\n nodes {\n id,\n name\n }\n}\n}",
7650
variables: {},
7751
});
52+
// get user correctly
7853
let user = await fetch(`https://api.linear.app/graphql`, {
7954
method: "POST",
8055
headers: {
@@ -85,6 +60,7 @@ export default async function Linear({
8560
});
8661
let userText = await user.text();
8762
let userJson = JSON.parse(userText).data;
63+
// save user correctly
8864
await saveUserInfo({
8965
access_token: json.access_token,
9066
id: userJson.viewer.id,
@@ -98,34 +74,14 @@ export default async function Linear({
9874
});
9975

10076
return (
101-
<div className="Box" style={{ maxWidth: "100ch", margin: "auto" }}>
102-
<div className="Subhead">
103-
<h2 className="Subhead-heading px-2">
104-
You have logged in with Linear as {userJson.viewer.displayName} in
105-
the team {userJson.teams.nodes[0].name}
106-
</h2>
107-
</div>
108-
<img
109-
src={userJson.viewer.avatarUrl}
110-
alt="linear user image"
111-
className="avatar avatar-8"
112-
/>
113-
<div>
114-
<TimeToRedirect url={"/"} />
115-
<p>
116-
If you are not redirected, please click <Link href="/">here</Link>
117-
</p>
118-
{loginArray.length ? (
119-
<div>
120-
<h3>You might also be interested: </h3>
121-
{loginArray.map((login) => (
122-
<>{login}</>
123-
))}
124-
</div>
125-
) : null}
126-
{error && <p>{error}</p>}
127-
</div>
128-
</div>
77+
<ConnectedService
78+
serviceName={serviceName}
79+
displayName={userJson.viewer.displayName}
80+
teamName={userJson.teams.nodes[0].name}
81+
avatarUrl={userJson.viewer.avatarUrl}
82+
loginArray={loginArray}
83+
error={error}
84+
/>
12985
);
13086
}
13187
}

pages/atlassian.tsx

Lines changed: 0 additions & 155 deletions
This file was deleted.

pages/discord.tsx

Lines changed: 0 additions & 99 deletions
This file was deleted.

0 commit comments

Comments
 (0)