Skip to content

feat: add GIF picker with gifbox API integration#94

Open
sanasol wants to merge 2 commits intostoatchat:devfrom
sanasol:feat/gif-picker
Open

feat: add GIF picker with gifbox API integration#94
sanasol wants to merge 2 commits intostoatchat:devfrom
sanasol:feat/gif-picker

Conversation

@sanasol
Copy link

@sanasol sanasol commented Mar 4, 2026

Adds GIF support to the Android client: a GIF picker panel for sending GIFs, and inline GIF rendering for received GIF messages.

GIF Picker:

  • Gifbox.kt — API client for gifbox endpoints (search, categories, trending)
  • GifPicker.kt — Composable with search bar, debounced search, category grid, and results grid
  • ic_gif_24dp.xml — GIF button icon
  • MessageField.kt — Added GIF button next to emoji picker
  • ChannelScreen.kt — Added GifPicker pane type and rendering

Inline GIF rendering:

  • Messages.kt — Added Video data class and video field to Embed model
  • Message.kt — Detect giphy.com URLs in embeds and render as inline images instead of generic website embeds. Extracts GIF URL from embed image/video fields or derives it from the giphy page URL. Skips message content rendering for GIF-only messages.

Related: stoatchat/stoatchat#661, stoatchat/for-web#996

Tested and live on https://chat.sanhost.net — app at https://chat.sanhost.net/downloads/

Adds a GIF picker panel alongside the existing emoji picker in the
message composition area. Uses the gifbox microservice API for
search, categories, and trending GIFs.

Components:
- Gifbox API client (search, categories, trending endpoints)
- GifPicker composable (search bar, category grid, results grid)
- GIF button in MessageField
- GifPicker pane in ChannelScreen

Signed-off-by: sanasol <[email protected]>
Adds giphy.com URL detection in message embeds to render GIFs inline
instead of as generic website embeds. Also adds the missing Video
field to the Embed model for proper GIF dimension extraction.

Signed-off-by: sanasol <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant