import React from 'react' import ReactDOM from 'react-dom' import { Box, VStack } from '@omnivore/web/components/elements/LayoutPrimitives' import { ArticleContainer } from '@omnivore/web/components/templates/article/ArticleContainer' import { applyStoredTheme } from '@omnivore/web/lib/themeUpdater' import '@omnivore/web/styles/globals.css' import '@omnivore/web/styles/articleInnerStyling.css' const mutation = async (name, input) => { if (window.webkit) { // Send iOS a message const result = await window?.webkit?.messageHandlers.articleAction?.postMessage({ actionID: name, ...input, }) console.log('action result', name, result, result.result) return result.result } else { // Send android a message console.log('sending android a message', name, input) AndroidWebKitMessenger.handleIdentifiableMessage( name, JSON.stringify(input) ) // TODO: handle errors switch (name) { case 'createHighlight': return input case 'deleteHighlight': return true case 'mergeHighlight': return { id: input['id'], shortID: input['shortId'], quote: input['quote'], patch: input['patch'], createdByMe: true, labels: [], } case 'updateHighlight': return true case 'articleReadingProgress': return true default: return true } } } const App = () => { applyStoredTheme(false) console.log('rerendering: ', window.omnivoreArticle) return ( <> mutation('createHighlight', input), deleteHighlightMutation: (highlightId) => mutation('deleteHighlight', { highlightId }), mergeHighlightMutation: (input) => mutation('mergeHighlight', input), updateHighlightMutation: (input) => mutation('updateHighlight', input), articleReadingProgressMutation: (input) => mutation('articleReadingProgress', input), }} /> ) } ReactDOM.render(, document.getElementById('root'))