Files
omnivore/apple/Sources/SafariExtension/Resources/scripts/api.js
Jackson Harper 40b6ab26f4 Add missing files
2023-12-22 11:43:23 +08:00

1 line
5.9 KiB
JavaScript

function gqlRequest(e,n){return getStorageItem("apiKey").then((t=>fetch(e,{method:"POST",redirect:"follow",credentials:"include",mode:"cors",headers:{Accept:"application/json","Content-Type":"application/json",...t?{Authorization:t}:{}},body:n}))).then((e=>e.json())).then((e=>{if(!e.data)throw new Error("No response data");return e.data}))}async function updateLabelsCache(e,n){const t=JSON.stringify({query:"query GetLabels {\n labels {\n ... on LabelsSuccess {\n labels {\n ...LabelFields\n }\n }\n ... on LabelsError {\n errorCodes\n }\n }\n }\n fragment LabelFields on Label {\n id\n name\n color\n description\n createdAt\n }\n "}),r=await gqlRequest(e,t);return r.labels&&!r.labels.errorCodes&&r.labels.labels?(await setStorage({labels:r.labels.labels,labelsLastUpdated:(new Date).toISOString()}),r.labels.labels):(console.log("GQL Error updating label cache response:",r,r),console.log(!r.labels,r.labels.errorCodes,!r.labels.labels),[])}async function updatePageTitle(e,n,t){const r=JSON.stringify({query:"mutation UpdatePage($input: UpdatePageInput!) {\n updatePage(input: $input) {\n ... on UpdatePageSuccess {\n updatedPage {\n id\n }\n }\n ... on UpdatePageError {\n errorCodes\n }\n }\n }\n ",variables:{input:{pageId:n,title:t}}}),i=await gqlRequest(e,r);if(!i.updatePage||i.updatePage.errorCodes||!i.updatePage.updatedPage)throw console.log("GQL Error updating page:",i),new Error("Error updating title.");return i.updatePage.updatePage}async function setLabels(e,n,t){const r=JSON.stringify({query:"mutation SetLabels($input: SetLabelsInput!) {\n setLabels(input: $input) {\n ... on SetLabelsSuccess {\n labels {\n id\n name\n color\n }\n }\n ... on SetLabelsError {\n errorCodes\n }\n }\n }\n ",variables:{input:{pageId:n,labels:t}}}),i=await gqlRequest(e,r);if(!i.setLabels||i.setLabels.errorCodes||!i.setLabels.labels)throw console.log("GQL Error setting labels:",i),new Error("Error setting labels.");return await appendLabelsToCache(i.setLabels.labels),i.setLabels.labels}async function appendLabelsToCache(e){const n=await getStorageItem("labels");n?(e.forEach((e=>{n.find((n=>n.name===e.name))||n.unshift(e)})),await setStorage({labels:n,labelsLastUpdated:(new Date).toISOString()})):await setStorage({labels:e,labelsLastUpdated:(new Date).toISOString()})}async function addNote(e,n,t,r,i){const a=JSON.stringify({query:"query GetArticle(\n $username: String!\n $slug: String!\n $includeFriendsHighlights: Boolean\n ) {\n article(username: $username, slug: $slug) {\n ... on ArticleSuccess {\n article {\n highlights(input: { includeFriends: $includeFriendsHighlights }) {\n ...HighlightFields\n }\n }\n }\n ... on ArticleError {\n errorCodes\n }\n }\n }\n fragment HighlightFields on Highlight {\n id\n type\n annotation\n }\n ",variables:{username:"me",slug:n,includeFriendsHighlights:!1}}),o=await gqlRequest(e,a);if(!o.article||o.article.errorCodes||!o.article.article)return void console.log("GQL Error getting existing highlights:",o);const l=o.article.article.highlights.find((e=>"NOTE"==e.type));if(l){const n=JSON.stringify({query:"\n mutation UpdateHighlight($input: UpdateHighlightInput!) {\n updateHighlight(input: $input) {\n ... on UpdateHighlightSuccess {\n highlight {\n id\n }\n }\n ... on UpdateHighlightError {\n errorCodes\n }\n }\n }\n ",variables:{input:{highlightId:l.id,annotation:l.annotation?l.annotation+"\n\n"+i:i}}}),t=await gqlRequest(e,n);return t.updateHighlight&&!t.updateHighlight.errorCodes&&t.updateHighlight.highlight?t.updateHighlight.highlight.id:void console.log("GQL Error updating note:",t)}{const a=JSON.stringify({query:"\n mutation CreateHighlight($input: CreateHighlightInput!) {\n createHighlight(input: $input) {\n ... on CreateHighlightSuccess {\n highlight {\n id\n }\n }\n ... on CreateHighlightError {\n errorCodes\n }\n }\n }\n ",variables:{input:{id:t,shortId:r,type:"NOTE",articleId:n,annotation:i}}}),o=await gqlRequest(e,a);return o.createHighlight&&!o.createHighlight.errorCodes&&o.createHighlight.highlight?o.createHighlight.highlight.id:void console.log("GQL Error setting note:",o)}}async function archive(e,n){const t=JSON.stringify({query:"mutation SetLinkArchived($input: ArchiveLinkInput!) {\n setLinkArchived(input: $input) {\n ... on ArchiveLinkSuccess {\n linkId\n message\n }\n ... on ArchiveLinkError {\n message\n errorCodes\n }\n }\n }\n ",variables:{input:{linkId:n,archived:!0}}}),r=await gqlRequest(e,t);if(!r.setLinkArchived||r.setLinkArchived.errorCodes||!r.setLinkArchived.linkId)throw console.log("GQL Error archiving:",r),new Error("Error archiving.");return r.setLinkArchived.linkId}async function deleteItem(e,n){const t=JSON.stringify({query:"mutation SetBookmarkArticle($input: SetBookmarkArticleInput!) {\n setBookmarkArticle(input: $input) {\n ... on SetBookmarkArticleSuccess {\n bookmarkedArticle {\n id\n }\n }\n ... on SetBookmarkArticleError {\n errorCodes\n }\n }\n }\n ",variables:{input:{articleID:n,bookmark:!1}}}),r=await gqlRequest(e,t);if(!r.setBookmarkArticle||r.setBookmarkArticle.errorCodes||!r.setBookmarkArticle.bookmarkedArticle)throw console.log("GQL Error deleting:",r),new Error("Error deleting.");return r.setBookmarkArticle.bookmarkedArticle}