Merge remote-tracking branch 'origin/auth-fixes' into prepare-inbox

This commit is contained in:
ilya-bkv 2022-11-22 06:22:25 +03:00
commit 62926197d1
15 changed files with 48 additions and 24 deletions

View File

@ -1,5 +1,5 @@
overwrite: true
schema: 'http://v2.discours.io/graphql'
schema: 'https://testapi.discours.io'
generates:
src/graphql/introspec.gen.ts:
plugins:

View File

@ -1,4 +1,4 @@
import { HomeView, PRERENDERED_ARTICLES_COUNT } from '../Views/Home'
import { HomeView, PRERENDERED_ARTICLES_COUNT, RANDOM_TOPICS_COUNT } from '../Views/Home'
import { PageWrap } from '../_shared/PageWrap'
import type { PageProps } from '../types'
import { createSignal, onCleanup, onMount, Show } from 'solid-js'
@ -15,8 +15,8 @@ export const HomePage = (props: PageProps) => {
return
}
await loadShouts({ filters: { visibility: 'public' }, limit: PRERENDERED_ARTICLES_COUNT, offset: 0 })
await loadRandomTopics()
await loadShouts({ filters: { visibility: 'public' }, limit: PRERENDERED_ARTICLES_COUNT })
await loadRandomTopics({ amount: RANDOM_TOPICS_COUNT })
setIsLoaded(true)
})

View File

@ -25,6 +25,7 @@ type HomeProps = {
}
export const PRERENDERED_ARTICLES_COUNT = 5
export const RANDOM_TOPICS_COUNT = 12
const CLIENT_LOAD_ARTICLES_COUNT = 29
const LOAD_MORE_PAGE_SIZE = 16 // Row1 + Row3 + Row2 + Beside (3 + 1) + Row1 + Row 2 + Row3

View File

@ -1,8 +1,10 @@
import { cacheExchange, CacheExchangeOpts } from '@urql/exchange-graphcache'
// import schema from './introspec.gen'
// import schema from './introspec.gen'
// NOTE: include codegened introspection schema when needed
// TODO: use urql-provided caching
export const cache = cacheExchange({
// TODO: include introspection schema when needed
keys: {
Shout: (data) => data.slug,
Author: (data) => data.slug,

30
src/graphql/client.ts Normal file
View File

@ -0,0 +1,30 @@
import { createClient } from '@urql/core'
import { isDev } from '../utils/config'
const localClient = (options) => {
const url = 'http://localhost:8080'
let c
try {
c = createClient({ ...options, url })
console.info('[graphql] using local client')
} catch (error) {
console.error(error)
c = createClient(options)
console.info(
`[graphql] using ${options.url.replace('https://', '').replace('/graphql', '').replace('/', '')}`
)
}
return c
}
export const initClient = (options) => {
try {
if (isDev) {
console.info('[graphql] devmode detected')
return localClient(options)
} else return createClient(options)
} catch (error) {
console.error(error)
return localClient(options)
}
}

View File

@ -32,7 +32,7 @@ const options: ClientOptions = {
// меняем через setToken, например при получении значения с сервера
// скорее всего придумаем что-нибудь получше со временем
const token = localStorage.getItem(TOKEN_LOCAL_STORAGE_KEY)
const headers = { Auth: token }
const headers = { Authorization: token }
return { headers }
},
exchanges

View File

@ -32,8 +32,8 @@ export default gql`
createdAt
publishedAt
stat {
_id: viewed
viewed
# _id: viewed
# viewed
reacted
rating
}

View File

@ -7,8 +7,6 @@ export default gql`
body
slug
pic
parents
children
# community
stat {
_id: shouts

View File

@ -13,8 +13,8 @@ export default gql`
_id: shouts
shouts
authors
# viewed
followers
# viewed
}
}
}

View File

@ -12,7 +12,6 @@ export default gql`
_id: shouts
shouts
authors
# viewed
followers
}
}

View File

@ -12,7 +12,6 @@ export default gql`
_id: shouts
shouts
authors
# viewed
followers
}
}

View File

@ -13,7 +13,6 @@ export default gql`
_id: shouts
shouts
authors
# viewed
followers
}
}

View File

@ -644,10 +644,8 @@ export type Token = {
export type Topic = {
body?: Maybe<Scalars['String']>
children?: Maybe<Array<Maybe<Scalars['String']>>>
community: Community
oid?: Maybe<Scalars['String']>
parents?: Maybe<Array<Maybe<Scalars['String']>>>
pic?: Maybe<Scalars['String']>
slug: Scalars['String']
stat?: Maybe<TopicStat>
@ -656,9 +654,7 @@ export type Topic = {
export type TopicInput = {
body?: InputMaybe<Scalars['String']>
children?: InputMaybe<Array<InputMaybe<Scalars['String']>>>
community: Scalars['String']
parents?: InputMaybe<Array<InputMaybe<Scalars['String']>>>
pic?: InputMaybe<Scalars['String']>
slug: Scalars['String']
title?: InputMaybe<Scalars['String']>
@ -671,7 +667,7 @@ export type TopicStat = {
rating?: Maybe<Scalars['Int']>
reacted: Scalars['Int']
shouts: Scalars['Int']
viewed: Scalars['Int']
viewed?: Maybe<Scalars['Int']>
}
export type User = {

View File

@ -3,9 +3,9 @@ import Prerendered from '../main.astro'
import { Root } from '../components/Root'
import { apiClient } from '../utils/apiClient'
import { initRouter } from '../stores/router'
import { PRERENDERED_ARTICLES_COUNT } from '../components/Views/Home'
import { PRERENDERED_ARTICLES_COUNT, RANDOM_TOPICS_COUNT } from '../components/Views/Home'
const randomTopics = await apiClient.getRandomTopics({ amount: 12 })
const randomTopics = await apiClient.getRandomTopics({ amount: RANDOM_TOPICS_COUNT })
const articles = await apiClient.getShouts(
{ filters: { visibility: "public" }, limit: PRERENDERED_ARTICLES_COUNT })

View File

@ -94,8 +94,8 @@ export const loadAllTopics = async (): Promise<void> => {
addTopics(topics)
}
export const loadRandomTopics = async (): Promise<void> => {
const topics = await apiClient.getRandomTopics({ amount: 12 })
export const loadRandomTopics = async ({ amount }: { amount: number }): Promise<void> => {
const topics = await apiClient.getRandomTopics({ amount })
setRandomTopics(topics)
}