Files
frontend-app-learning/plugins/README.md
Leangseu Kim 36b3c36379 feat: whole course translations (#1330)
* feat: add language selection

chore: update tests so we have less error message

test: update test

* test: update tests

* chore: remove duplicate translation

* chore: lint for console

* chore: remove comments

* chore: make sure the affect url frame refresh after the language selection change

* chore: add whole_course_translation and language to courseware meta (#1305)

* feat: Add feedback widget UI mock

Add unit tests

Fix snapshot

Clean Sequence component logEvent calls

Clean unit test

Put feedback widget behind whole course translation flag

Fix useFeedbackWidget test

* chore: add src and dest translation

* feat: first iteration of plugin translation

chore: update plugin instruction

* feat: Connect FeedbackWidget with backend services (#1325)

Connect FeedbackWidget with backend services

Move feedback widget to unit translation plugin

* feat: Add authentication to WCT feedback endpoints (#1329)

* chore: add fetch config and move feedback widget for the plugin

chore: rewrite and test the api request

chore: rebase

chore: update translation feedback

chore: test

chore: add more tests

* chore: rebase

* chore: update requested change

* chore: update package

* chore: upgrade frontend-lib-special-exams and frontend-lib-learning-assistant

* chore: update tests

* chore: remove unneeded package

* chore: update example config

* chore: add source-map-loader

* fix: feedback widget render error after submit feedback (#1335)

* fix: feedback widget render error after submit feedback

* fix: widget logic

---------

Co-authored-by: Rodrigo Martin <rodrigom_94@hotmail.com>
2024-03-27 13:39:36 -04:00

1.4 KiB

How to develop plugin

You can define plugin in env.config.jsx see example.env.config.jsx as example.

Current caveat

  • The way for how I deal with override method is still wonky
    • The redux still require middleware to ignore the plugin's action from serializing
    • I am not sure how it behave with useCallback, useMemo, ...etc
    • There are still open question on how to write it properly

Current work that should consider core part and extendable for the future plugin framework

  • usePluingsCallback is the callback supose to be some level of equality to be using React.useCallback. It would try to execute the function, then any plugin that try registerOverrideMethod. The order of the it being run isn't the determined. There are a couple things I want to add:

    • I might consider testing it with zustand library to make sure it is portable and not rely on redux. I tried to do this with provider, but it seems to run into infinite loop of trigger changed.
  • registerOverrideMethod is working like a way to register callback that behave like a middleware. It ran the default one, then pass the result of the default one to the plugin. Any plugin that register the override can update the value. Alternatively, we can override the function completely instead applying each affect. Or we can support both. But it requires a bit more thought out architecture.