Migrate toClout
This commit is contained in:
@@ -2,4 +2,5 @@ import {MetricsClient} from '#/analytics/metrics/client'
|
|||||||
import {type Events} from '#/analytics/metrics/types'
|
import {type Events} from '#/analytics/metrics/types'
|
||||||
|
|
||||||
export type {Events as Metrics} from '#/analytics/metrics/types'
|
export type {Events as Metrics} from '#/analytics/metrics/types'
|
||||||
|
export * from '#/analytics/metrics/utils'
|
||||||
export const metrics = new MetricsClient<Events>()
|
export const metrics = new MetricsClient<Events>()
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
export function toClout(n: number | null | undefined): number | undefined {
|
||||||
|
if (n == null) {
|
||||||
|
return undefined
|
||||||
|
} else {
|
||||||
|
return Math.max(0, Math.round(Math.log(n)))
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -76,14 +76,6 @@ type FlatJSONRecord = Record<
|
|||||||
|
|
||||||
let getCurrentRouteName: () => string | null | undefined = () => null
|
let getCurrentRouteName: () => string | null | undefined = () => null
|
||||||
|
|
||||||
export function toClout(n: number | null | undefined): number | undefined {
|
|
||||||
if (n == null) {
|
|
||||||
return undefined
|
|
||||||
} else {
|
|
||||||
return Math.max(0, Math.round(Math.log(n)))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated use `logger.metric()` instead
|
* @deprecated use `logger.metric()` instead
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -3,12 +3,12 @@ import {type AppBskyActorDefs, type AppBskyFeedDefs, AtUri} from '@atproto/api'
|
|||||||
import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query'
|
import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query'
|
||||||
|
|
||||||
import {useToggleMutationQueue} from '#/lib/hooks/useToggleMutationQueue'
|
import {useToggleMutationQueue} from '#/lib/hooks/useToggleMutationQueue'
|
||||||
import {type LogEvents, toClout} from '#/lib/statsig/statsig'
|
|
||||||
import {logger} from '#/logger'
|
import {logger} from '#/logger'
|
||||||
import {updatePostShadow} from '#/state/cache/post-shadow'
|
import {updatePostShadow} from '#/state/cache/post-shadow'
|
||||||
import {type Shadow} from '#/state/cache/types'
|
import {type Shadow} from '#/state/cache/types'
|
||||||
import {useAgent, useSession} from '#/state/session'
|
import {useAgent, useSession} from '#/state/session'
|
||||||
import * as userActionHistory from '#/state/userActionHistory'
|
import * as userActionHistory from '#/state/userActionHistory'
|
||||||
|
import {type Metrics, toClout} from '#/analytics/metrics'
|
||||||
import {useIsThreadMuted, useSetThreadMute} from '../cache/thread-mutes'
|
import {useIsThreadMuted, useSetThreadMute} from '../cache/thread-mutes'
|
||||||
import {findProfileQueryData} from './profile'
|
import {findProfileQueryData} from './profile'
|
||||||
|
|
||||||
@@ -103,8 +103,7 @@ export function usePostLikeMutationQueue(
|
|||||||
post: Shadow<AppBskyFeedDefs.PostView>,
|
post: Shadow<AppBskyFeedDefs.PostView>,
|
||||||
viaRepost: {uri: string; cid: string} | undefined,
|
viaRepost: {uri: string; cid: string} | undefined,
|
||||||
feedDescriptor: string | undefined,
|
feedDescriptor: string | undefined,
|
||||||
logContext: LogEvents['post:like']['logContext'] &
|
logContext: Metrics['post:like']['logContext'],
|
||||||
LogEvents['post:unlike']['logContext'],
|
|
||||||
) {
|
) {
|
||||||
const queryClient = useQueryClient()
|
const queryClient = useQueryClient()
|
||||||
const postUri = post.uri
|
const postUri = post.uri
|
||||||
@@ -164,7 +163,7 @@ export function usePostLikeMutationQueue(
|
|||||||
|
|
||||||
function usePostLikeMutation(
|
function usePostLikeMutation(
|
||||||
feedDescriptor: string | undefined,
|
feedDescriptor: string | undefined,
|
||||||
logContext: LogEvents['post:like']['logContext'],
|
logContext: Metrics['post:like']['logContext'],
|
||||||
post: Shadow<AppBskyFeedDefs.PostView>,
|
post: Shadow<AppBskyFeedDefs.PostView>,
|
||||||
) {
|
) {
|
||||||
const {currentAccount} = useSession()
|
const {currentAccount} = useSession()
|
||||||
@@ -207,7 +206,7 @@ function usePostLikeMutation(
|
|||||||
|
|
||||||
function usePostUnlikeMutation(
|
function usePostUnlikeMutation(
|
||||||
feedDescriptor: string | undefined,
|
feedDescriptor: string | undefined,
|
||||||
logContext: LogEvents['post:unlike']['logContext'],
|
logContext: Metrics['post:unlike']['logContext'],
|
||||||
post: Shadow<AppBskyFeedDefs.PostView>,
|
post: Shadow<AppBskyFeedDefs.PostView>,
|
||||||
) {
|
) {
|
||||||
const agent = useAgent()
|
const agent = useAgent()
|
||||||
@@ -228,8 +227,7 @@ export function usePostRepostMutationQueue(
|
|||||||
post: Shadow<AppBskyFeedDefs.PostView>,
|
post: Shadow<AppBskyFeedDefs.PostView>,
|
||||||
viaRepost: {uri: string; cid: string} | undefined,
|
viaRepost: {uri: string; cid: string} | undefined,
|
||||||
feedDescriptor: string | undefined,
|
feedDescriptor: string | undefined,
|
||||||
logContext: LogEvents['post:repost']['logContext'] &
|
logContext: Metrics['post:repost']['logContext'],
|
||||||
LogEvents['post:unrepost']['logContext'],
|
|
||||||
) {
|
) {
|
||||||
const queryClient = useQueryClient()
|
const queryClient = useQueryClient()
|
||||||
const postUri = post.uri
|
const postUri = post.uri
|
||||||
@@ -291,7 +289,7 @@ export function usePostRepostMutationQueue(
|
|||||||
|
|
||||||
function usePostRepostMutation(
|
function usePostRepostMutation(
|
||||||
feedDescriptor: string | undefined,
|
feedDescriptor: string | undefined,
|
||||||
logContext: LogEvents['post:repost']['logContext'],
|
logContext: Metrics['post:repost']['logContext'],
|
||||||
post: Shadow<AppBskyFeedDefs.PostView>,
|
post: Shadow<AppBskyFeedDefs.PostView>,
|
||||||
) {
|
) {
|
||||||
const agent = useAgent()
|
const agent = useAgent()
|
||||||
@@ -314,7 +312,7 @@ function usePostRepostMutation(
|
|||||||
|
|
||||||
function usePostUnrepostMutation(
|
function usePostUnrepostMutation(
|
||||||
feedDescriptor: string | undefined,
|
feedDescriptor: string | undefined,
|
||||||
logContext: LogEvents['post:unrepost']['logContext'],
|
logContext: Metrics['post:unrepost']['logContext'],
|
||||||
post: Shadow<AppBskyFeedDefs.PostView>,
|
post: Shadow<AppBskyFeedDefs.PostView>,
|
||||||
) {
|
) {
|
||||||
const agent = useAgent()
|
const agent = useAgent()
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ import {
|
|||||||
import {uploadBlob} from '#/lib/api'
|
import {uploadBlob} from '#/lib/api'
|
||||||
import {until} from '#/lib/async/until'
|
import {until} from '#/lib/async/until'
|
||||||
import {useToggleMutationQueue} from '#/lib/hooks/useToggleMutationQueue'
|
import {useToggleMutationQueue} from '#/lib/hooks/useToggleMutationQueue'
|
||||||
import {logEvent, type LogEvents, toClout} from '#/lib/statsig/statsig'
|
|
||||||
import {updateProfileShadow} from '#/state/cache/profile-shadow'
|
import {updateProfileShadow} from '#/state/cache/profile-shadow'
|
||||||
import {type Shadow} from '#/state/cache/types'
|
import {type Shadow} from '#/state/cache/types'
|
||||||
import {type ImageMeta} from '#/state/gallery'
|
import {type ImageMeta} from '#/state/gallery'
|
||||||
@@ -36,6 +35,8 @@ import {
|
|||||||
import {useUpdateProfileVerificationCache} from '#/state/queries/verification/useUpdateProfileVerificationCache'
|
import {useUpdateProfileVerificationCache} from '#/state/queries/verification/useUpdateProfileVerificationCache'
|
||||||
import {useAgent, useSession} from '#/state/session'
|
import {useAgent, useSession} from '#/state/session'
|
||||||
import * as userActionHistory from '#/state/userActionHistory'
|
import * as userActionHistory from '#/state/userActionHistory'
|
||||||
|
import {useAnalytics} from '#/analytics'
|
||||||
|
import {type Metrics, toClout} from '#/analytics/metrics'
|
||||||
import type * as bsky from '#/types/bsky'
|
import type * as bsky from '#/types/bsky'
|
||||||
import {
|
import {
|
||||||
ProgressGuideAction,
|
ProgressGuideAction,
|
||||||
@@ -243,8 +244,7 @@ export function useProfileUpdateMutation() {
|
|||||||
|
|
||||||
export function useProfileFollowMutationQueue(
|
export function useProfileFollowMutationQueue(
|
||||||
profile: Shadow<bsky.profile.AnyProfileView>,
|
profile: Shadow<bsky.profile.AnyProfileView>,
|
||||||
logContext: LogEvents['profile:follow']['logContext'] &
|
logContext: Metrics['profile:follow']['logContext'],
|
||||||
LogEvents['profile:follow']['logContext'],
|
|
||||||
position?: number,
|
position?: number,
|
||||||
contextProfileDid?: string,
|
contextProfileDid?: string,
|
||||||
) {
|
) {
|
||||||
@@ -364,11 +364,12 @@ export function useProfileFollowMutationQueue(
|
|||||||
}
|
}
|
||||||
|
|
||||||
function useProfileFollowMutation(
|
function useProfileFollowMutation(
|
||||||
logContext: LogEvents['profile:follow']['logContext'],
|
logContext: Metrics['profile:follow']['logContext'],
|
||||||
profile: Shadow<bsky.profile.AnyProfileView>,
|
profile: Shadow<bsky.profile.AnyProfileView>,
|
||||||
position?: number,
|
position?: number,
|
||||||
contextProfileDid?: string,
|
contextProfileDid?: string,
|
||||||
) {
|
) {
|
||||||
|
const ax = useAnalytics()
|
||||||
const {currentAccount} = useSession()
|
const {currentAccount} = useSession()
|
||||||
const agent = useAgent()
|
const agent = useAgent()
|
||||||
const queryClient = useQueryClient()
|
const queryClient = useQueryClient()
|
||||||
@@ -381,7 +382,7 @@ function useProfileFollowMutation(
|
|||||||
ownProfile = findProfileQueryData(queryClient, currentAccount.did)
|
ownProfile = findProfileQueryData(queryClient, currentAccount.did)
|
||||||
}
|
}
|
||||||
captureAction(ProgressGuideAction.Follow)
|
captureAction(ProgressGuideAction.Follow)
|
||||||
logEvent('profile:follow', {
|
ax.metric('profile:follow', {
|
||||||
logContext,
|
logContext,
|
||||||
didBecomeMutual: profile.viewer
|
didBecomeMutual: profile.viewer
|
||||||
? Boolean(profile.viewer.followedBy)
|
? Boolean(profile.viewer.followedBy)
|
||||||
@@ -401,12 +402,13 @@ function useProfileFollowMutation(
|
|||||||
}
|
}
|
||||||
|
|
||||||
function useProfileUnfollowMutation(
|
function useProfileUnfollowMutation(
|
||||||
logContext: LogEvents['profile:unfollow']['logContext'],
|
logContext: Metrics['profile:unfollow']['logContext'],
|
||||||
) {
|
) {
|
||||||
|
const ax = useAnalytics()
|
||||||
const agent = useAgent()
|
const agent = useAgent()
|
||||||
return useMutation<void, Error, {did: string; followUri: string}>({
|
return useMutation<void, Error, {did: string; followUri: string}>({
|
||||||
mutationFn: async ({followUri}) => {
|
mutationFn: async ({followUri}) => {
|
||||||
logEvent('profile:unfollow', {logContext})
|
ax.metric('profile:unfollow', {logContext})
|
||||||
return await agent.deleteFollow(followUri)
|
return await agent.deleteFollow(followUri)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user