add refresh home api
This commit is contained in:
@ -1714,6 +1714,7 @@ export type Mutation = {
|
||||
optInFeature: OptInFeatureResult;
|
||||
recommend: RecommendResult;
|
||||
recommendHighlights: RecommendHighlightsResult;
|
||||
refreshHome: RefreshHomeResult;
|
||||
replyToEmail: ReplyToEmailResult;
|
||||
reportItem: ReportItemResult;
|
||||
revokeApiKey: RevokeApiKeyResult;
|
||||
@ -2525,6 +2526,22 @@ export type RecommendingUser = {
|
||||
username: Scalars['String'];
|
||||
};
|
||||
|
||||
export type RefreshHomeError = {
|
||||
__typename?: 'RefreshHomeError';
|
||||
errorCodes: Array<RefreshHomeErrorCode>;
|
||||
};
|
||||
|
||||
export enum RefreshHomeErrorCode {
|
||||
Pending = 'PENDING'
|
||||
}
|
||||
|
||||
export type RefreshHomeResult = RefreshHomeError | RefreshHomeSuccess;
|
||||
|
||||
export type RefreshHomeSuccess = {
|
||||
__typename?: 'RefreshHomeSuccess';
|
||||
success: Scalars['Boolean'];
|
||||
};
|
||||
|
||||
export type Reminder = {
|
||||
__typename?: 'Reminder';
|
||||
archiveUntil: Scalars['Boolean'];
|
||||
@ -2875,6 +2892,7 @@ export type SearchItem = {
|
||||
recommendations?: Maybe<Array<Recommendation>>;
|
||||
savedAt: Scalars['Date'];
|
||||
score?: Maybe<Scalars['Float']>;
|
||||
seenAt?: Maybe<Scalars['Date']>;
|
||||
shortId?: Maybe<Scalars['String']>;
|
||||
siteIcon?: Maybe<Scalars['String']>;
|
||||
siteName?: Maybe<Scalars['String']>;
|
||||
@ -4411,6 +4429,10 @@ export type ResolversTypes = {
|
||||
Recommendation: ResolverTypeWrapper<Recommendation>;
|
||||
RecommendationGroup: ResolverTypeWrapper<RecommendationGroup>;
|
||||
RecommendingUser: ResolverTypeWrapper<RecommendingUser>;
|
||||
RefreshHomeError: ResolverTypeWrapper<RefreshHomeError>;
|
||||
RefreshHomeErrorCode: RefreshHomeErrorCode;
|
||||
RefreshHomeResult: ResolversTypes['RefreshHomeError'] | ResolversTypes['RefreshHomeSuccess'];
|
||||
RefreshHomeSuccess: ResolverTypeWrapper<RefreshHomeSuccess>;
|
||||
Reminder: ResolverTypeWrapper<Reminder>;
|
||||
ReminderError: ResolverTypeWrapper<ReminderError>;
|
||||
ReminderErrorCode: ReminderErrorCode;
|
||||
@ -4947,6 +4969,9 @@ export type ResolversParentTypes = {
|
||||
Recommendation: Recommendation;
|
||||
RecommendationGroup: RecommendationGroup;
|
||||
RecommendingUser: RecommendingUser;
|
||||
RefreshHomeError: RefreshHomeError;
|
||||
RefreshHomeResult: ResolversParentTypes['RefreshHomeError'] | ResolversParentTypes['RefreshHomeSuccess'];
|
||||
RefreshHomeSuccess: RefreshHomeSuccess;
|
||||
Reminder: Reminder;
|
||||
ReminderError: ReminderError;
|
||||
ReminderResult: ResolversParentTypes['ReminderError'] | ResolversParentTypes['ReminderSuccess'];
|
||||
@ -6391,6 +6416,7 @@ export type MutationResolvers<ContextType = ResolverContext, ParentType extends
|
||||
optInFeature?: Resolver<ResolversTypes['OptInFeatureResult'], ParentType, ContextType, RequireFields<MutationOptInFeatureArgs, 'input'>>;
|
||||
recommend?: Resolver<ResolversTypes['RecommendResult'], ParentType, ContextType, RequireFields<MutationRecommendArgs, 'input'>>;
|
||||
recommendHighlights?: Resolver<ResolversTypes['RecommendHighlightsResult'], ParentType, ContextType, RequireFields<MutationRecommendHighlightsArgs, 'input'>>;
|
||||
refreshHome?: Resolver<ResolversTypes['RefreshHomeResult'], ParentType, ContextType>;
|
||||
replyToEmail?: Resolver<ResolversTypes['ReplyToEmailResult'], ParentType, ContextType, RequireFields<MutationReplyToEmailArgs, 'recentEmailId' | 'reply'>>;
|
||||
reportItem?: Resolver<ResolversTypes['ReportItemResult'], ParentType, ContextType, RequireFields<MutationReportItemArgs, 'input'>>;
|
||||
revokeApiKey?: Resolver<ResolversTypes['RevokeApiKeyResult'], ParentType, ContextType, RequireFields<MutationRevokeApiKeyArgs, 'id'>>;
|
||||
@ -6663,6 +6689,20 @@ export type RecommendingUserResolvers<ContextType = ResolverContext, ParentType
|
||||
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
|
||||
};
|
||||
|
||||
export type RefreshHomeErrorResolvers<ContextType = ResolverContext, ParentType extends ResolversParentTypes['RefreshHomeError'] = ResolversParentTypes['RefreshHomeError']> = {
|
||||
errorCodes?: Resolver<Array<ResolversTypes['RefreshHomeErrorCode']>, ParentType, ContextType>;
|
||||
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
|
||||
};
|
||||
|
||||
export type RefreshHomeResultResolvers<ContextType = ResolverContext, ParentType extends ResolversParentTypes['RefreshHomeResult'] = ResolversParentTypes['RefreshHomeResult']> = {
|
||||
__resolveType: TypeResolveFn<'RefreshHomeError' | 'RefreshHomeSuccess', ParentType, ContextType>;
|
||||
};
|
||||
|
||||
export type RefreshHomeSuccessResolvers<ContextType = ResolverContext, ParentType extends ResolversParentTypes['RefreshHomeSuccess'] = ResolversParentTypes['RefreshHomeSuccess']> = {
|
||||
success?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>;
|
||||
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
|
||||
};
|
||||
|
||||
export type ReminderResolvers<ContextType = ResolverContext, ParentType extends ResolversParentTypes['Reminder'] = ResolversParentTypes['Reminder']> = {
|
||||
archiveUntil?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>;
|
||||
id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
|
||||
@ -6864,6 +6904,7 @@ export type SearchItemResolvers<ContextType = ResolverContext, ParentType extend
|
||||
recommendations?: Resolver<Maybe<Array<ResolversTypes['Recommendation']>>, ParentType, ContextType>;
|
||||
savedAt?: Resolver<ResolversTypes['Date'], ParentType, ContextType>;
|
||||
score?: Resolver<Maybe<ResolversTypes['Float']>, ParentType, ContextType>;
|
||||
seenAt?: Resolver<Maybe<ResolversTypes['Date']>, ParentType, ContextType>;
|
||||
shortId?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
||||
siteIcon?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
||||
siteName?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
||||
@ -7796,6 +7837,9 @@ export type Resolvers<ContextType = ResolverContext> = {
|
||||
Recommendation?: RecommendationResolvers<ContextType>;
|
||||
RecommendationGroup?: RecommendationGroupResolvers<ContextType>;
|
||||
RecommendingUser?: RecommendingUserResolvers<ContextType>;
|
||||
RefreshHomeError?: RefreshHomeErrorResolvers<ContextType>;
|
||||
RefreshHomeResult?: RefreshHomeResultResolvers<ContextType>;
|
||||
RefreshHomeSuccess?: RefreshHomeSuccessResolvers<ContextType>;
|
||||
Reminder?: ReminderResolvers<ContextType>;
|
||||
ReminderError?: ReminderErrorResolvers<ContextType>;
|
||||
ReminderResult?: ReminderResultResolvers<ContextType>;
|
||||
|
||||
@ -1551,6 +1551,7 @@ type Mutation {
|
||||
optInFeature(input: OptInFeatureInput!): OptInFeatureResult!
|
||||
recommend(input: RecommendInput!): RecommendResult!
|
||||
recommendHighlights(input: RecommendHighlightsInput!): RecommendHighlightsResult!
|
||||
refreshHome: RefreshHomeResult!
|
||||
replyToEmail(recentEmailId: ID!, reply: AllowedReply!): ReplyToEmailResult!
|
||||
reportItem(input: ReportItemInput!): ReportItemResult!
|
||||
revokeApiKey(id: ID!): RevokeApiKeyResult!
|
||||
@ -1891,6 +1892,20 @@ type RecommendingUser {
|
||||
username: String!
|
||||
}
|
||||
|
||||
type RefreshHomeError {
|
||||
errorCodes: [RefreshHomeErrorCode!]!
|
||||
}
|
||||
|
||||
enum RefreshHomeErrorCode {
|
||||
PENDING
|
||||
}
|
||||
|
||||
union RefreshHomeResult = RefreshHomeError | RefreshHomeSuccess
|
||||
|
||||
type RefreshHomeSuccess {
|
||||
success: Boolean!
|
||||
}
|
||||
|
||||
type Reminder {
|
||||
archiveUntil: Boolean!
|
||||
id: ID!
|
||||
@ -2217,6 +2232,7 @@ type SearchItem {
|
||||
recommendations: [Recommendation!]
|
||||
savedAt: Date!
|
||||
score: Float
|
||||
seenAt: Date
|
||||
shortId: String
|
||||
siteIcon: String
|
||||
siteName: String
|
||||
|
||||
@ -670,7 +670,7 @@ export const searchResolver = authorized<
|
||||
SearchSuccess,
|
||||
SearchError,
|
||||
QuerySearchArgs
|
||||
>(async (_obj, params, { uid, log }) => {
|
||||
>(async (_obj, params, { uid }) => {
|
||||
const startCursor = params.after || ''
|
||||
const first = Math.min(params.first || 10, 100) // limit to 100 items
|
||||
|
||||
|
||||
@ -60,7 +60,7 @@ import {
|
||||
saveDiscoverArticleResolver,
|
||||
} from './discover_feeds'
|
||||
import { optInFeatureResolver } from './features'
|
||||
import { homeResolver } from './home'
|
||||
import { homeResolver, refreshHomeResolver } from './home'
|
||||
import { uploadImportFileResolver } from './importers/uploadImportFileResolver'
|
||||
import {
|
||||
addPopularReadResolver,
|
||||
@ -332,6 +332,7 @@ export const functionResolvers = {
|
||||
fetchContent: fetchContentResolver,
|
||||
exportToIntegration: exportToIntegrationResolver,
|
||||
replyToEmail: replyToEmailResolver,
|
||||
refreshHome: refreshHomeResolver,
|
||||
},
|
||||
Query: {
|
||||
me: getMeUserResolver,
|
||||
@ -867,4 +868,5 @@ export const functionResolvers = {
|
||||
...resultResolveTypeResolver('ReplyToEmail'),
|
||||
...resultResolveTypeResolver('Home'),
|
||||
...resultResolveTypeResolver('Subscription'),
|
||||
...resultResolveTypeResolver('RefreshHome'),
|
||||
}
|
||||
|
||||
@ -5,6 +5,9 @@ import {
|
||||
HomeSection,
|
||||
HomeSuccess,
|
||||
QueryHomeArgs,
|
||||
RefreshHomeError,
|
||||
RefreshHomeErrorCode,
|
||||
RefreshHomeSuccess,
|
||||
} from '../../generated/graphql'
|
||||
import { getHomeSections } from '../../jobs/update_home'
|
||||
import { getJob } from '../../queue-processor'
|
||||
@ -34,12 +37,12 @@ export const homeResolver = authorized<
|
||||
const cursor = after ? parseInt(after) : Date.now()
|
||||
|
||||
const sections = await getHomeSections(uid, limit, cursor)
|
||||
log.info('Just read feed sections fetched')
|
||||
log.info('Home sections fetched')
|
||||
|
||||
if (sections.length === 0) {
|
||||
const existingJob = await getJob(updateHomeJobId(uid))
|
||||
if (existingJob) {
|
||||
log.info('Just read feed update job already enqueued')
|
||||
log.info('Update job job already enqueued')
|
||||
|
||||
return {
|
||||
errorCodes: [HomeErrorCode.Pending],
|
||||
@ -51,7 +54,7 @@ export const homeResolver = authorized<
|
||||
cursor,
|
||||
})
|
||||
|
||||
log.info('Just read feed update enqueued')
|
||||
log.info('Update home job enqueued')
|
||||
|
||||
return {
|
||||
errorCodes: [HomeErrorCode.Pending],
|
||||
@ -75,3 +78,27 @@ export const homeResolver = authorized<
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
export const refreshHomeResolver = authorized<
|
||||
RefreshHomeSuccess,
|
||||
RefreshHomeError
|
||||
>(async (_, __, { uid, log }) => {
|
||||
const existingJob = await getJob(updateHomeJobId(uid))
|
||||
if (existingJob) {
|
||||
log.info('Update home job already enqueued')
|
||||
|
||||
return {
|
||||
errorCodes: [RefreshHomeErrorCode.Pending],
|
||||
}
|
||||
}
|
||||
|
||||
await enqueueUpdateHomeJob({
|
||||
userId: uid,
|
||||
})
|
||||
|
||||
log.info('Update home job enqueued')
|
||||
|
||||
return {
|
||||
success: true,
|
||||
}
|
||||
})
|
||||
|
||||
@ -1677,6 +1677,7 @@ const schema = gql`
|
||||
directionality: DirectionalityType
|
||||
format: String
|
||||
score: Float
|
||||
seenAt: Date
|
||||
}
|
||||
|
||||
type SearchItemEdge {
|
||||
@ -3193,6 +3194,20 @@ const schema = gql`
|
||||
|
||||
union SubscriptionResult = SubscriptionSuccess | SubscriptionError
|
||||
|
||||
type RefreshHomeSuccess {
|
||||
success: Boolean!
|
||||
}
|
||||
|
||||
enum RefreshHomeErrorCode {
|
||||
PENDING
|
||||
}
|
||||
|
||||
type RefreshHomeError {
|
||||
errorCodes: [RefreshHomeErrorCode!]!
|
||||
}
|
||||
|
||||
union RefreshHomeResult = RefreshHomeSuccess | RefreshHomeError
|
||||
|
||||
# Mutations
|
||||
type Mutation {
|
||||
googleLogin(input: GoogleLoginInput!): LoginResult!
|
||||
@ -3318,6 +3333,7 @@ const schema = gql`
|
||||
): DeleteDiscoverFeedResult!
|
||||
editDiscoverFeed(input: EditDiscoverFeedInput!): EditDiscoverFeedResult!
|
||||
emptyTrash: EmptyTrashResult!
|
||||
refreshHome: RefreshHomeResult!
|
||||
}
|
||||
|
||||
# FIXME: remove sort from feedArticles after all cached tabs are closed
|
||||
|
||||
Reference in New Issue
Block a user