This commit is contained in:
		
							parent
							
								
									a0432af982
								
							
						
					
					
						commit
						e882a8c0e8
					
				
					 2 changed files with 19 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -1,6 +1,9 @@
 | 
			
		|||
import { persistentAtom } from "@nanostores/persistent";
 | 
			
		||||
import { useStore } from "@nanostores/solid";
 | 
			
		||||
import { useNavigate } from "@solidjs/router";
 | 
			
		||||
import { createOAuthAPIClient, createRestAPIClient } from "masto";
 | 
			
		||||
import { action } from "nanostores";
 | 
			
		||||
import { createRenderEffect } from "solid-js";
 | 
			
		||||
 | 
			
		||||
export type Account = {
 | 
			
		||||
  site: string;
 | 
			
		||||
| 
						 | 
				
			
			@ -25,7 +28,7 @@ interface OAuth2AccessToken {
 | 
			
		|||
 | 
			
		||||
async function oauth2TokenViaAuthCode(app: RegisteredApp, authCode: string) {
 | 
			
		||||
  const resp = await fetch(new URL("./oauth/token", app.site), {
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    method: "post",
 | 
			
		||||
    body: JSON.stringify({
 | 
			
		||||
      grant_type: "authorization_code",
 | 
			
		||||
      code: authCode,
 | 
			
		||||
| 
						 | 
				
			
			@ -97,7 +100,7 @@ export const $registeredApps = persistentAtom<{
 | 
			
		|||
 | 
			
		||||
async function getAppAccessToken(app: RegisteredApp) {
 | 
			
		||||
  const resp = await fetch(new URL("./oauth/token", app.site), {
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    method: "post",
 | 
			
		||||
    headers: {
 | 
			
		||||
      "Content-Type": "application/json",
 | 
			
		||||
    },
 | 
			
		||||
| 
						 | 
				
			
			@ -172,3 +175,15 @@ export const getOrRegisterApp = action(
 | 
			
		|||
    return all[site];
 | 
			
		||||
  },
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
export function useAccts() {
 | 
			
		||||
  const accts = useStore($accounts);
 | 
			
		||||
  const naviagte = useNavigate();
 | 
			
		||||
 | 
			
		||||
  createRenderEffect(() => {
 | 
			
		||||
    if (accts().length > 0) return;
 | 
			
		||||
    naviagte("/accounts/sign-in");
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  return accts;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,7 @@ import {
 | 
			
		|||
  untrack,
 | 
			
		||||
  onMount,
 | 
			
		||||
} from "solid-js";
 | 
			
		||||
import { $accounts } from "../accounts/stores";
 | 
			
		||||
import { $accounts, useAccts } from "../accounts/stores";
 | 
			
		||||
import { useDocumentTitle } from "../utils";
 | 
			
		||||
import { useStore } from "@nanostores/solid";
 | 
			
		||||
import { useMastoClientFor } from "../masto/clients";
 | 
			
		||||
| 
						 | 
				
			
			@ -152,7 +152,7 @@ const TimelinePanel: Component<{
 | 
			
		|||
const Home: Component = () => {
 | 
			
		||||
  let panelList: HTMLDivElement;
 | 
			
		||||
  useDocumentTitle("Timelines");
 | 
			
		||||
  const accounts = useStore($accounts);
 | 
			
		||||
  const accounts = useAccts();
 | 
			
		||||
  const now = createTimeSource();
 | 
			
		||||
 | 
			
		||||
  const client = useMastoClientFor(() => accounts()[0]);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue