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

Commit

Permalink
Feature/login to service in app router (#218)
Browse files Browse the repository at this point in the history
* 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>
  • Loading branch information
EstebanDalelR and baristaGeek committed Aug 8, 2023
1 parent e75ab6f commit 1dd3350
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 462 deletions.
88 changes: 22 additions & 66 deletions app/linear/page.tsx
Original file line number Diff line number Diff line change
@@ -1,18 +1,14 @@
import Link from "next/link";
import { getServerSession } from "next-auth";

//change this to import correctly
import saveUserInfo from "../../utils/db/linear/saveUser";

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

import SlackLoginLink from "../../components/SlackLoginLink";
import NotionLoginLink from "../../components/NotionLoginLink";
import ConfluenceLoginLink from "../../components/ConfluenceLoginLink";
import GitHubLoginLink from "../../components/GitHubLoginLink";
import ConnectedService from "../../utils/services/page";
import LoginArray from "../../utils/services/loginArray";

export default async function Linear({
export default async function ServicePage({
searchParams,
}: {
searchParams: { [key: string]: string | string[] | undefined };
Expand All @@ -22,12 +18,14 @@ export default async function Linear({
const userName = session?.user?.name;
const { code, state } = searchParams;
let error = "";

const [userData, linearToken] = await Promise.all([
// change service name
const serviceName = "Linear";
const [userData, serviceToken] = await Promise.all([
getAllPublicUserData({ userEmail }).catch((e) => {
console.error(e);
return null;
}),
// change this fetch
fetch(`https://api.linear.app/oauth/token`, {
method: "POST",
headers: {
Expand All @@ -38,35 +36,11 @@ export default async function Linear({
}),
]);

const services = [
{
name: "GitHub",
dataProp: "github_data",
loginComponent: <GitHubLoginLink userEmail={userEmail} />,
},
{
name: "Slack",
dataProp: "slack_data",
loginComponent: <SlackLoginLink userEmail={userEmail} />,
},
{
name: "Confluence",
dataProp: "confluence_data",
loginComponent: <ConfluenceLoginLink userEmail={userEmail} />,
},
{
name: "Notion",
dataProp: "notion_data",
loginComponent: <NotionLoginLink userEmail={userEmail} />,
},
];
const loginArray = services
.map((service) =>
userData?.[service.dataProp] ? null : service.loginComponent
)
.filter((component) => component !== null);
// the recommended services should not be of the same category as the current one
const nameList = ["GitHub", "Slack", "Notion", "Confluence"];
const loginArray = LoginArray({ nameList, userEmail, userData });

const json = await linearToken.json();
const json = await serviceToken.json();
if (json.error) {
error = json.error;
} else {
Expand All @@ -75,6 +49,7 @@ export default async function Linear({
"query Me {\nviewer {\n id,\n name,\n displayName, email,\n avatarUrl\n},\nteams {\n nodes {\n id,\n name\n }\n}\n}",
variables: {},
});
// get user correctly
let user = await fetch(`https://api.linear.app/graphql`, {
method: "POST",
headers: {
Expand All @@ -85,6 +60,7 @@ export default async function Linear({
});
let userText = await user.text();
let userJson = JSON.parse(userText).data;
// save user correctly
await saveUserInfo({
access_token: json.access_token,
id: userJson.viewer.id,
Expand All @@ -98,34 +74,14 @@ export default async function Linear({
});

return (
<div className="Box" style={{ maxWidth: "100ch", margin: "auto" }}>
<div className="Subhead">
<h2 className="Subhead-heading px-2">
You have logged in with Linear as {userJson.viewer.displayName} in
the team {userJson.teams.nodes[0].name}
</h2>
</div>
<img
src={userJson.viewer.avatarUrl}
alt="linear user image"
className="avatar avatar-8"
/>
<div>
<TimeToRedirect url={"/"} />
<p>
If you are not redirected, please click <Link href="/">here</Link>
</p>
{loginArray.length ? (
<div>
<h3>You might also be interested: </h3>
{loginArray.map((login) => (
<>{login}</>
))}
</div>
) : null}
{error && <p>{error}</p>}
</div>
</div>
<ConnectedService
serviceName={serviceName}
displayName={userJson.viewer.displayName}
teamName={userJson.teams.nodes[0].name}
avatarUrl={userJson.viewer.avatarUrl}
loginArray={loginArray}
error={error}
/>
);
}
}
155 changes: 0 additions & 155 deletions pages/atlassian.tsx

This file was deleted.

99 changes: 0 additions & 99 deletions pages/discord.tsx

This file was deleted.

Loading

0 comments on commit 1dd3350

Please sign in to comment.