feat: dynamic content handling #103
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Pull Request
Description:
Previous Experience
The current types of
message.contenttypes we handle aretext,image,video,videosandsearch_results. If user wants to handle an additional content type and want to display the UI for it, there is no option than to clone this repo and write their handler in the package and use a separate instance of this package, which is an anti-pattern with our component library based approach.Proposed Solution
This solution gives user the ability to configure
customMessageHandlerswhich will be an array of components and their specific type (similar tovideo,videosetc.) for exampleaudioif you want to display the audio player component.Configuration details are also mentioned in the
README.mdfile in this PR.Here is an example for this
You can set up a
audioUI handler in this way:views/components/AudioResponse.vuefile, which will display the audio data. (We are assuming the format of themessage.content)views/DefaultView.vueand pass it in the form of an arrayThat's it. Nothing more needed. Following is the output generated, without adding a separate message handler

Changes:
callApiwhich will allows users to utilise any backend APIsRelated Issues:
Testing:
Follow the steps given above to check it out
Checklist: