Create codemod for addressing ESLint warnings (#10032)
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import React from 'react'
|
||||
import {useCallback} from 'react'
|
||||
import {
|
||||
type AppBskyActorDefs,
|
||||
moderateProfile,
|
||||
@@ -47,7 +47,7 @@ export function useActorAutocompleteQuery(
|
||||
: undefined
|
||||
return res?.data.actors || []
|
||||
},
|
||||
select: React.useCallback(
|
||||
select: useCallback(
|
||||
(data: AppBskyActorDefs.ProfileViewBasic[]) => {
|
||||
return computeSuggestions({
|
||||
q: prefix,
|
||||
@@ -67,7 +67,7 @@ export function useActorAutocompleteFn() {
|
||||
const moderationOpts = useModerationOpts()
|
||||
const agent = useAgent()
|
||||
|
||||
return React.useCallback(
|
||||
return useCallback(
|
||||
async ({query, limit = 8}: {query: string; limit?: number}) => {
|
||||
query = query.toLowerCase()
|
||||
let res
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React from 'react'
|
||||
import {useCallback} from 'react'
|
||||
import {useMutation, useQueryClient} from '@tanstack/react-query'
|
||||
|
||||
import {STALE} from '#/state/queries'
|
||||
@@ -16,7 +16,7 @@ export function useFetchHandle() {
|
||||
const queryClient = useQueryClient()
|
||||
const agent = useAgent()
|
||||
|
||||
return React.useCallback(
|
||||
return useCallback(
|
||||
async (handleOrDid: string) => {
|
||||
if (handleOrDid.startsWith('did:')) {
|
||||
const res = await queryClient.fetchQuery({
|
||||
@@ -55,7 +55,7 @@ export function useFetchDid() {
|
||||
const queryClient = useQueryClient()
|
||||
const agent = useAgent()
|
||||
|
||||
return React.useCallback(
|
||||
return useCallback(
|
||||
async (handleOrDid: string) => {
|
||||
return queryClient.fetchQuery({
|
||||
staleTime: STALE.INFINITY,
|
||||
|
||||
@@ -2,7 +2,14 @@
|
||||
* A kind of companion API to ./feed.ts. See that file for more info.
|
||||
*/
|
||||
|
||||
import React, {useRef} from 'react'
|
||||
import {
|
||||
createContext,
|
||||
useContext,
|
||||
useEffect,
|
||||
useMemo,
|
||||
useRef,
|
||||
useState,
|
||||
} from 'react'
|
||||
import {AppState} from 'react-native'
|
||||
import {useQueryClient} from '@tanstack/react-query'
|
||||
import EventEmitter from 'eventemitter3'
|
||||
@@ -33,10 +40,10 @@ interface ApiContext {
|
||||
getCachedUnreadPage: () => FeedPage | undefined
|
||||
}
|
||||
|
||||
const stateContext = React.createContext<StateContext>('')
|
||||
const stateContext = createContext<StateContext>('')
|
||||
stateContext.displayName = 'NotificationsUnreadStateContext'
|
||||
|
||||
const apiContext = React.createContext<ApiContext>({
|
||||
const apiContext = createContext<ApiContext>({
|
||||
async markAllRead() {},
|
||||
async checkUnread() {},
|
||||
getCachedUnreadPage: () => undefined,
|
||||
@@ -49,17 +56,17 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
|
||||
const queryClient = useQueryClient()
|
||||
const moderationOpts = useModerationOpts()
|
||||
|
||||
const [numUnread, setNumUnread] = React.useState('')
|
||||
const [numUnread, setNumUnread] = useState('')
|
||||
|
||||
const checkUnreadRef = React.useRef<ApiContext['checkUnread'] | null>(null)
|
||||
const cacheRef = React.useRef<CachedFeedPage>({
|
||||
const checkUnreadRef = useRef<ApiContext['checkUnread'] | null>(null)
|
||||
const cacheRef = useRef<CachedFeedPage>({
|
||||
usableInFeed: false,
|
||||
syncedAt: new Date(),
|
||||
data: undefined,
|
||||
unreadCount: 0,
|
||||
})
|
||||
|
||||
React.useEffect(() => {
|
||||
useEffect(() => {
|
||||
function markAsUnusable() {
|
||||
if (cacheRef.current) {
|
||||
cacheRef.current.usableInFeed = false
|
||||
@@ -72,7 +79,7 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
|
||||
}, [])
|
||||
|
||||
// periodic sync
|
||||
React.useEffect(() => {
|
||||
useEffect(() => {
|
||||
if (!hasSession || !checkUnreadRef.current) {
|
||||
return
|
||||
}
|
||||
@@ -85,7 +92,7 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
|
||||
}, [hasSession])
|
||||
|
||||
// listen for broadcasts
|
||||
React.useEffect(() => {
|
||||
useEffect(() => {
|
||||
const listener = ({data}: MessageEvent) => {
|
||||
cacheRef.current = {
|
||||
usableInFeed: false,
|
||||
@@ -109,7 +116,7 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
|
||||
const isFetchingRef = useRef(false)
|
||||
|
||||
// create API
|
||||
const api = React.useMemo<ApiContext>(() => {
|
||||
const api = useMemo<ApiContext>(() => {
|
||||
return {
|
||||
async markAllRead() {
|
||||
// update server
|
||||
@@ -211,11 +218,11 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
|
||||
}
|
||||
|
||||
export function useUnreadNotifications() {
|
||||
return React.useContext(stateContext)
|
||||
return useContext(stateContext)
|
||||
}
|
||||
|
||||
export function useUnreadNotificationsApi() {
|
||||
return React.useContext(apiContext)
|
||||
return useContext(apiContext)
|
||||
}
|
||||
|
||||
function countUnread(page: FeedPage) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, {useCallback, useEffect, useRef} from 'react'
|
||||
import {useCallback, useEffect, useMemo, useRef} from 'react'
|
||||
import {AppState} from 'react-native'
|
||||
import {
|
||||
type AppBskyActorDefs,
|
||||
@@ -164,7 +164,7 @@ export function usePostFeedQuery(
|
||||
const fetchLimit = MIN_POSTS
|
||||
|
||||
// Make sure this doesn't invalidate unless really needed.
|
||||
const selectArgs = React.useMemo(
|
||||
const selectArgs = useMemo(
|
||||
() => ({
|
||||
feedTuners,
|
||||
moderationOpts,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React from 'react'
|
||||
import {useRef} from 'react'
|
||||
import {
|
||||
AppBskyEmbedRecord,
|
||||
AppBskyEmbedRecordWithMedia,
|
||||
@@ -174,7 +174,7 @@ export function useToggleQuoteDetachmentMutation() {
|
||||
const agent = useAgent()
|
||||
const queryClient = useQueryClient()
|
||||
const getPosts = useGetPosts()
|
||||
const prevEmbed = React.useRef<AppBskyFeedDefs.PostView['embed']>(undefined)
|
||||
const prevEmbed = useRef<AppBskyFeedDefs.PostView['embed']>(undefined)
|
||||
|
||||
return useMutation({
|
||||
mutationFn: async ({
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React from 'react'
|
||||
import {useMemo} from 'react'
|
||||
import {
|
||||
BskyAgent,
|
||||
DEFAULT_LABEL_SETTINGS,
|
||||
@@ -36,7 +36,7 @@ export function useMyLabelersQuery({
|
||||
const labelers = useLabelersDetailedInfoQuery({dids})
|
||||
const isLoading = prefs.isLoading || labelers.isLoading
|
||||
const error = prefs.error || labelers.error
|
||||
return React.useMemo(() => {
|
||||
return useMemo(() => {
|
||||
return {
|
||||
isLoading,
|
||||
error,
|
||||
@@ -48,7 +48,7 @@ export function useMyLabelersQuery({
|
||||
|
||||
export function useLabelDefinitionsQuery() {
|
||||
const labelers = useMyLabelersQuery()
|
||||
return React.useMemo(() => {
|
||||
return useMemo(() => {
|
||||
return {
|
||||
labelDefs: Object.fromEntries(
|
||||
(labelers.data || []).map(labeler => [
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React from 'react'
|
||||
import {useCallback, useMemo, useRef} from 'react'
|
||||
import {
|
||||
type AppBskyActorDefs,
|
||||
type AppBskyFeedDefs,
|
||||
@@ -39,14 +39,14 @@ export function useSearchPostsQuery({
|
||||
}) {
|
||||
const agent = useAgent()
|
||||
const moderationOpts = useModerationOpts()
|
||||
const selectArgs = React.useMemo(
|
||||
const selectArgs = useMemo(
|
||||
() => ({
|
||||
isSearchingSpecificUser: /from:(\w+)/.test(query),
|
||||
moderationOpts,
|
||||
}),
|
||||
[query, moderationOpts],
|
||||
)
|
||||
const lastRun = React.useRef<{
|
||||
const lastRun = useRef<{
|
||||
data: InfiniteData<AppBskyFeedSearchPosts.OutputSchema>
|
||||
args: typeof selectArgs
|
||||
result: InfiniteData<AppBskyFeedSearchPosts.OutputSchema>
|
||||
@@ -72,7 +72,7 @@ export function useSearchPostsQuery({
|
||||
initialPageParam: undefined,
|
||||
getNextPageParam: lastPage => lastPage.cursor,
|
||||
enabled: enabled ?? !!moderationOpts,
|
||||
select: React.useCallback(
|
||||
select: useCallback(
|
||||
(data: InfiniteData<AppBskyFeedSearchPosts.OutputSchema>) => {
|
||||
const {moderationOpts, isSearchingSpecificUser} = selectArgs
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React from 'react'
|
||||
import {useCallback, useMemo} from 'react'
|
||||
import {type AppBskyUnspeccedGetTrends, hasMutedWord} from '@atproto/api'
|
||||
import {useQuery} from '@tanstack/react-query'
|
||||
|
||||
@@ -18,7 +18,7 @@ export const createGetTrendsQueryKey = () => ['trends']
|
||||
export function useGetTrendsQuery() {
|
||||
const agent = useAgent()
|
||||
const {data: preferences} = usePreferencesQuery()
|
||||
const mutedWords = React.useMemo(() => {
|
||||
const mutedWords = useMemo(() => {
|
||||
return preferences?.moderationPrefs?.mutedWords || []
|
||||
}, [preferences?.moderationPrefs])
|
||||
|
||||
@@ -41,7 +41,7 @@ export function useGetTrendsQuery() {
|
||||
)
|
||||
return data
|
||||
},
|
||||
select: React.useCallback(
|
||||
select: useCallback(
|
||||
(data: AppBskyUnspeccedGetTrends.OutputSchema) => {
|
||||
return {
|
||||
trends: (data.trends ?? []).filter(t => {
|
||||
|
||||
Reference in New Issue
Block a user