mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
* add highlight mappings * return highlight in resolvers * temporarily skip highlight tests * add test for getting highlights * update merge highlight * separate elastic methods * roll back merge highlight test * add highlight to elastic script * update delete highlight in elastic * migrate highlight data from postgres to elastic * rescue not found exception when page is not found in the migration script * exclude highlights in searching pages results * search pages with highlights only with has:highlight query * add search endpoint to search pages or highlights * reduce code smell in search api * fix rebase error * fix tests * add test for search highlight * add test for new search endpoint * add labels to search results * update schema * update search query * fix update/share highlights * fix rebase error * fix tests * add highlight model in elastic * add savedAt and publishedAt date range in search query * add sort by updated and recently read * fix tests * close db connection when tests are done * test github action * revert github action test * fix rebase error * add docker-compose for api-test * remove unused env * remove highlights with no page attached to * allow get_articles resolver to search for query so we can merge it without web changes
66 lines
1.8 KiB
TypeScript
66 lines
1.8 KiB
TypeScript
import { ReportItemInput, ReportType } from '../generated/graphql'
|
|
import { ContentDisplayReport } from '../entity/reports/content_display_report'
|
|
import { AbuseReport } from '../entity/reports/abuse_report'
|
|
import { getPageById } from '../elastic/pages'
|
|
import { getRepository } from '../entity/utils'
|
|
|
|
export const saveContentDisplayReport = async (
|
|
uid: string,
|
|
input: ReportItemInput
|
|
): Promise<boolean> => {
|
|
const repo = getRepository(ContentDisplayReport)
|
|
|
|
const page = await getPageById(input.pageId)
|
|
|
|
if (!page) {
|
|
console.log('unable to submit report, page not found', input)
|
|
return false
|
|
}
|
|
|
|
// We capture the article content and original html now, in case it
|
|
// reparsed or updated later, this gives us a view of exactly
|
|
// what the user saw.
|
|
const result = await repo.save({
|
|
userId: uid,
|
|
elasticPageId: input.pageId,
|
|
content: page.content,
|
|
originalHtml: page.originalHtml || undefined,
|
|
originalUrl: page.url,
|
|
reportComment: input.reportComment,
|
|
})
|
|
|
|
return !!result
|
|
}
|
|
|
|
export const saveAbuseReport = async (
|
|
uid: string,
|
|
input: ReportItemInput
|
|
): Promise<boolean> => {
|
|
const repo = getRepository(AbuseReport)
|
|
|
|
const page = await getPageById(input.pageId)
|
|
|
|
if (!page) {
|
|
console.log('unable to submit report, page not found', input)
|
|
return false
|
|
}
|
|
|
|
if (!input.sharedBy) {
|
|
console.log('unable to submit report, sharedBy not found', input)
|
|
return false
|
|
}
|
|
|
|
// We capture the article content and original html now, in case it
|
|
// reparsed or updated later, this gives us a view of exactly
|
|
// what the user saw.
|
|
const result = await repo.save({
|
|
reportedBy: uid,
|
|
sharedBy: input.sharedBy,
|
|
elasticPageId: input.pageId,
|
|
itemUrl: input.itemUrl,
|
|
reportTypes: [ReportType.Abusive],
|
|
reportComment: input.reportComment,
|
|
})
|
|
|
|
return !!result
|
|
}
|