Commit Graph

272 Commits

Author SHA1 Message Date
toasted-nutbread
6f49f426b5
Generalized frame connections (#654)
* Create FrameClient and FrameEndpoint

* Use new Frame* classes for Popup=>frame connection

* Update api.sendMessageToFrame and api.broadcastTab to include the sender's frameId

* Update FrameClient to store the frame's frameId
2020-07-08 19:58:06 -04:00
toasted-nutbread
441c23bf3b
Rename Database to DictionaryDatabase (#633) 2020-06-28 17:24:06 -04:00
toasted-nutbread
7590055d4e
Merge BackendEventHandler into Backend class (#632)
* Merge BackendEventHandler into Backend class

* Remove unused public functions
2020-06-28 17:22:44 -04:00
toasted-nutbread
5183fb575f
Backend refactor (#631)
* Mark fields as private

* Remove static

* Make functions private

* Create onCommand handler

* Group event handlers

* Move functions

* Merge _onOptionsUpdated and _applyOptions

* Rename event handler

* Move event handlers

* Remove _getOptionsSchema

* Move private functions
2020-06-28 14:59:01 -04:00
toasted-nutbread
f2345b7d1c
Use deferPromise (#630)
* Use deferPromise

* Move definition

* Implement promiseTimeout using deferPromise
2020-06-28 14:39:43 -04:00
toasted-nutbread
cdf191336a
Clone function (#624)
* Add clone function

* Replace utilIsolate with clone

* Replace JsonSchema.isolate with clone function

* Include core.js for tests which use json-schema.js

* Update visisted set
2020-06-28 12:38:34 -04:00
toasted-nutbread
3e68af8666
Shadow DOM container for popup iframes (#623)
* Add support for injecting stylesheets into a custom parent node

* Add api.getStylesheetContent

* Add support for injecting a CSS file's content

* Add usePopupShadowDom option

* Use a per-parentNode cache

* Add support for using a shadow DOM wrapper around popup iframes

* Ignore the popup container instead of the frame
2020-06-24 21:46:13 -04:00
toasted-nutbread
244ab31bb2
Generic database (#600)
* Update test

* Rename db to _db

* Create GenericDatabase class

* Catch prepare error

* Allow database to be purged even if it was not open

* Remove unused functions

* Change static functions to non-static

* Delete and count using the media object store

* Update tests
2020-06-21 16:12:56 -04:00
toasted-nutbread
0c69e54fde
Optimize anki note field generation (#611) 2020-06-21 15:54:34 -04:00
toasted-nutbread
6562d0c1e5
Template renderer class (#574)
* Convert handlebars.js to a class

* Move/rename function

* Update helper registration

* Rename helper functions

* Limit cache size

* Make render() async

* Rename and move
2020-06-15 20:11:54 -04:00
toasted-nutbread
5cba421201
Update the badge icon if the backend experiences an error (#602) 2020-06-13 10:20:12 -04:00
toasted-nutbread
839e306cac
Immediate backend event handlers (#555)
* Add function to await until prepare is completed

* Create BackendEventHandler to synchronously set up event handling
2020-06-07 21:50:14 -04:00
toasted-nutbread
9767b76553
Use cross frame API (#553)
* Use new CrossFrameAPI for popup proxy communication

* Remove use of old cross-frame communication classes

* Remove use of old cross-frame communication files

* Make the crossFrame object a member of the api object
2020-06-07 21:40:11 -04:00
toasted-nutbread
2c58b1c109
Limit action port message size (#587)
* Add onDisconnect handler

* Update how error is posted

* Update action ports to send long messages in fragments

* Remove ack timer

* Move message destructuring into try block
2020-05-31 18:17:12 -04:00
toasted-nutbread
976a200ffc
Backup update (#582)
* Add function to assign all settings

* Update how settings backups are restored

* Remove page reload

* Update profile index after importing
2020-05-30 16:23:56 -04:00
toasted-nutbread
6dd6af05e1
Update background global object usage (#556)
* Omit global window object for scripts used on the background page

* Validate document exists before using

* Remove dom.js from background.html
2020-05-24 14:01:21 -04:00
toasted-nutbread
66e1185686
Settings binder (#542)
* Fix _modifySetting being async

* Return values for modifySettings's set and splice actions

* Add apiGetSettings

* Create a class which can accumulate tasks to run in bulk

* Create a class which binds input elements to customizable sources

* Create class which binds input elements to settings

* Add support for value transforms

* Remove redundant ObjectPropertyAccessor.getPathArray

* Fix not using correct types for input.min/max/step

* Fix wrong condition

* Use api object
2020-05-24 13:50:34 -04:00
toasted-nutbread
694120b8a5
Cross frame communication (#531)
* Set up new cross-frame port connector

* Create classes for cross-frame API invocation with replies

* Remove event listeners on disconnect
2020-05-23 13:34:55 -04:00
siikamiika
39df44eca4
Fix "tags" template (#539)
* fix tag templates for merge and group modes

* update version upgrade

* adjust upgrade replacement order
2020-05-22 20:03:34 -04:00
siikamiika
d6a3825a38
Modifier key platform names (#519)
* wip

* add environment class

* use Environment class

* use Environment for scanning modifier options

* remove Environment in favor of API

* await promise

* use modifier symbols on macOS

* fix key separator issues

* if else to switch

* simplify variable names
2020-05-09 18:36:00 +03:00
toasted-nutbread
caca9869c4
Add contentScript parameter to backend message handlers (#512)
* Add contentScript parameter to message handlers

* Remove _validatePrivilegedMessageSender calls from handler functions

* Reformat handlers
2020-05-07 19:37:25 -04:00
toasted-nutbread
bb2d9501af
Add apiModifySettings (#501)
* Update getProfile/getProfileFromContext to store this.options in a variable

* Add useSchema parameter to options getter functions

* Add apiModifySettings

* Use apiModifySettings instead of apiOptionsSet

* Remove apiOptionsSet

* Fix incorrect deleteCount check

* Require explicit scope for options

* Throw on invalid scope
2020-05-06 19:32:28 -04:00
toasted-nutbread
021ccb5ac3
Move util database modification functions (#499)
* Update onProgress callback to handle multiple arguments

* Add apiImportDictionaryArchive

* Add apiDeleteDictionary

* Make onProgress the last argument for consistency

* Remove deprecated util functions

* Fix issue with missing progress args

* Remove function calls which modify the database from Translator

* Update tests

* Fix errors not being serialized correctly in _createActionListenerPort
2020-05-06 19:28:26 -04:00
toasted-nutbread
501281e887
Popup init update (#497)
* Add API function to send a message to a specific frameId in a tab

* Update _windowMessageHandlers to support additional info per handler

* Remove message token

* Add new authorization check

* Set up new initialization handler

* Update initialization

* Remove message token

* Replace 'prepare' with 'configure'

* Create new prepare function

* Change configure guard

* Log errors in onMessage

* Improve popup initialize function

* Clear secret/token in _resetFrame

* Remove backend message token

* Clear src and srcdoc attributes before loading

* Don't treat about:blank unloads as load events
2020-05-06 19:27:21 -04:00
toasted-nutbread
d581bffa15
Style fixes (#494)
* Place multi-line expression parentheses on the correct line

* Add function-paren-newline eslint rule

* Add some additional eslint rules
2020-05-02 13:04:17 -04:00
toasted-nutbread
5a61c311ad
Api invoke with progress (#483)
* Create an internal API function to open a port

* Create system for running actions over a special port

* Don't assign in expression
2020-05-02 12:57:13 -04:00
toasted-nutbread
6c341a13d8
Refactor frontend API classes (#482)
* Mark functions as private

* Remove constructor side effects

* Use safer handler invocation

* Mark functions as private

* Mark fields as private

* Update BackendApiForwarder public API
2020-05-02 12:50:44 -04:00
toasted-nutbread
cae6b657ab
Anki audio download (#477)
* Update how audio is added to Anki cards

* Upgrade Anki templates

* Update comments
2020-05-02 12:50:16 -04:00
toasted-nutbread
0956634d61
Add duplicateScope: 'deck' option (#476)
* Add duplicateScope: 'deck' option

* Add option to control duplicate scope

* Use duplicateScope for findNoteIds

* Update location of quotes
2020-04-27 18:10:59 -04:00
toasted-nutbread
5b96559df8
Error logging refactoring (#454)
* Create new logging methods on yomichan object

* Use new yomichan.logError instead of global logError

* Remove old logError

* Handle unhandledrejection events

* Add addEventListener stub

* Update log function

* Update error conversion to support more types

* Add log event

* Add API log function

* Log errors to the backend

* Make error/warning logs update the badge

* Clear log error indicator on extension button click

* Log correct URL on the background page

* Fix incorrect error conversion

* Remove unhandledrejection handling

Firefox doesn't support it properly.

* Remove unused argument type from log function

* Improve function name

* Change console.warn to yomichan.logWarning

* Move log forwarding initialization into main scripts
2020-04-26 16:55:25 -04:00
toasted-nutbread
9216d1862f
Merge pull request #463 from toasted-nutbread/explicit-entry-point
Explicit entry points
2020-04-23 18:26:34 -04:00
siikamiika
6cd86e203a fix custom anki templates 2020-04-23 19:58:31 +03:00
toasted-nutbread
3c8eb9eee0 Create background-main.js 2020-04-19 14:26:44 -04:00
toasted-nutbread
fd6ea0e404 Add API for getting media data 2020-04-18 21:32:35 -04:00
toasted-nutbread
51d756eefc Fix _prepareError check 2020-04-18 21:15:15 -04:00
toasted-nutbread
4638985b16 Remove unused global 2020-04-18 21:12:54 -04:00
toasted-nutbread
66ef730119 Update style, use isObject 2020-04-18 21:12:54 -04:00
toasted-nutbread
dee7d924a8 Show error status for prepare() errors 2020-04-18 21:12:54 -04:00
toasted-nutbread
5c5c70326d Add a delay before showing the loading state
Intended to prevent flickering when startup is quick
2020-04-18 21:12:54 -04:00
toasted-nutbread
c9704b5c5e Update when/how badge state is changed 2020-04-18 21:12:54 -04:00
toasted-nutbread
6498556ec7 Update isPrepared to be consistent with DisplaySearch's isPrepared 2020-04-18 21:11:15 -04:00
toasted-nutbread
e1ebfb02f7 Disable cache on the backend and fix a bug with the cache key 2020-04-18 14:23:34 -04:00
toasted-nutbread
7fc3882607 Update the parameters passed to various audio-related functions 2020-04-18 14:23:34 -04:00
toasted-nutbread
5b3d7fadc3
Merge pull request #453 from toasted-nutbread/reuse-anki-instance
Reuse AnkiConnect instance
2020-04-18 14:14:52 -04:00
toasted-nutbread
106172e2c1
Merge pull request #447 from toasted-nutbread/util-conversions
Util conversions
2020-04-18 14:12:41 -04:00
toasted-nutbread
06e95b8747 Remove unused global 2020-04-17 22:16:08 -04:00
siikamiika
8c16a6e580
Merge pull request #456 from siikamiika/parse-text-refactor
Parse text refactor
2020-04-17 01:32:01 +03:00
siikamiika
619df42aed simplify to enable constant usage 2020-04-14 21:25:02 +03:00
siikamiika
3fa8b8e186 prevent infinite loop if source length is 0 2020-04-14 21:21:52 +03:00
toasted-nutbread
bf971be15b
Merge pull request #444 from toasted-nutbread/unused-globals
Check for unused globals as part of CI
2020-04-13 18:55:19 -04:00
siikamiika
f93dc85710 assume and propagate strings for text parsing 2020-04-13 22:55:33 +03:00
siikamiika
c613321a73 move QueryParser.parseText to Backend 2020-04-13 14:53:24 +03:00
toasted-nutbread
ebfc7ca945 Pass anki reference to AnkiNoteBuilder constructor 2020-04-12 12:46:32 -04:00
toasted-nutbread
4c2ca82a29 Use single instance of AnkiConnect 2020-04-12 12:38:33 -04:00
toasted-nutbread
51e17b35e3 Convert some util* functions into api* functions 2020-04-11 15:25:19 -04:00
toasted-nutbread
a864cf094f
Merge pull request #437 from toasted-nutbread/backend-api-handler-changes
Backend api handler changes
2020-04-11 11:32:52 -04:00
toasted-nutbread
a296c758b9 apiBroadcast => apiBroadcastTab 2020-04-10 20:00:18 -04:00
toasted-nutbread
d164fc6f62 Remove unused globals 2020-04-10 18:45:23 -04:00
4e5029f7ec Update license author field to broader to explicitly reflect that
Yomichan is an ongoing community project. It really does take a village,
and everyone who contributes code owns a part of it :)
2020-04-10 11:10:21 -07:00
toasted-nutbread
c88ec43ad1 Fix yomichanCoreReady waiting for a response 2020-04-07 19:59:10 -04:00
toasted-nutbread
a2b66dc6cc Rename apiForward to apiBroadcast 2020-04-07 19:51:39 -04:00
toasted-nutbread
96566b8581 Update forward to be synchronous and ignore the reply 2020-04-07 19:49:54 -04:00
toasted-nutbread
038e43d19d Update some API handlers to be synchronous 2020-04-07 19:47:46 -04:00
toasted-nutbread
82462edce0 Add support for API handlers to be optionally asynchronous 2020-04-07 19:41:02 -04:00
toasted-nutbread
8a419dfa67 Pass AudioSystem instance to AnkiNoteBuilder constructor 2020-04-07 19:04:47 -04:00
toasted-nutbread
efcdff72a3 Move media injection functions into AnkiNoteBuilder 2020-04-07 19:04:47 -04:00
toasted-nutbread
059db280bb Add custom context object for note creation 2020-04-06 18:20:04 -04:00
toasted-nutbread
8b07a23de9 Rename context to details 2020-04-06 18:20:04 -04:00
toasted-nutbread
9052ab8ebd Move dictionary import functionality into a new class 2020-03-30 20:51:20 -04:00
toasted-nutbread
02f7763f00 Add importDictionary function to Backend 2020-03-30 20:45:36 -04:00
toasted-nutbread
c193a703cc Move database creation into Backend 2020-03-30 20:39:04 -04:00
toasted-nutbread
0f15cca2df Convert Japanese utilities to a module-like style 2020-03-15 22:24:30 -04:00
toasted-nutbread
64fc0349a1 Update global declarations 2020-03-10 22:40:35 -04:00
toasted-nutbread
36c55f0b17
Merge pull request #401 from toasted-nutbread/audio-refactor
Audio refactor
2020-03-10 19:20:34 -04:00
toasted-nutbread
0cbf427ab5 Update argument order 2020-03-09 21:00:57 -04:00
siikamiika
0112dbab33 fix searchQueryUpdate 2020-03-09 04:06:31 +02:00
toasted-nutbread
aad4ab5ecc Rename audio functions using "url" to use "uri" 2020-03-07 21:57:26 -05:00
toasted-nutbread
391f3dd29a Update how audio URIs are built 2020-03-07 21:57:26 -05:00
toasted-nutbread
21d194d145 Make _audioInject internal to Backend 2020-03-07 21:56:15 -05:00
toasted-nutbread
7ac1c843a9 Use dependency injection for apiTemplateRender 2020-03-07 21:47:48 -05:00
toasted-nutbread
69cce49b0d Move Anki note generation functionality into a new class 2020-03-07 21:46:59 -05:00
toasted-nutbread
a8eb50d96f Use dependency injection for getAudioUri implementation 2020-03-07 21:43:51 -05:00
toasted-nutbread
cadcd72fad Use AudioSystem in Backend 2020-03-07 21:42:18 -05:00
toasted-nutbread
b8eb5e6016
Merge pull request #397 from toasted-nutbread/clipboard-monitor-refactor2
Clipboard monitor refactor
2020-03-07 21:41:45 -05:00
toasted-nutbread
eea9dc68b9 Fix runtime.lastError error on startup in Firefox 2020-03-07 17:41:57 -05:00
toasted-nutbread
93aa275d82 Use explicit dependency injection for ClipboardMonitor 2020-03-07 10:47:30 -05:00
toasted-nutbread
7822230b7f Use events for ClipboardMonitor 2020-03-07 10:41:31 -05:00
siikamiika
de8d9e6bf1 fix return type 2020-03-04 05:28:22 +02:00
siikamiika
9ceb663f29 add missing runtime message for backendPrepared 2020-03-03 00:05:01 +02:00
siikamiika
e6347a94e7 prepare Backend for browser_action 2020-03-02 23:26:55 +02:00
siikamiika
e0edb30efd fix Backend prepare issues in settings 2020-03-02 11:18:09 +02:00
siikamiika
bd48d2f919 fix Yomichan core message issues 2020-03-02 10:35:46 +02:00
siikamiika
967e99b7f6 ensure Backend prepare in other places 2020-03-02 04:51:45 +02:00
siikamiika
e6e5f23cf8 fix API calls when Backend isn't ready yet 2020-03-02 00:39:15 +02:00
siikamiika
2abf46b6fa simplify backend prepare 2020-03-01 23:06:37 +02:00
toasted-nutbread
8e29da0c6b Load default Anki field templates from a file 2020-02-27 20:33:13 -05:00
toasted-nutbread
8bc1a40914 Use .bind instead of () => {} 2020-02-26 21:01:40 -05:00
toasted-nutbread
8d5d034516 Move event handler definitions 2020-02-26 19:22:32 -05:00
toasted-nutbread
b391704f3d Use for of 2020-02-25 22:13:06 -05:00
toasted-nutbread
7b97138ad1 Changed type returned by apiTextParseMecab to avoid using for in 2020-02-25 22:13:03 -05:00