soapbox/docs/store.md

2.7 KiB

Redux Store Map

A big part of what makes soapbox-fe function is the Redux store. Redux is basically a database of everything your frontend needs to know about in the form of a giant JSON object.

To work with Redux, you will want to install the Redux browser extension. This will allow you to see the full Redux store when working in development.

Due to the large size of the Redux store in soapbox-fe, it's worth documenting the purpose of each path.

If it's not documented, it's because I inherited it from Mastodon and I don't know what it does yet.

  • dropdown_menu

  • timelines

  • meta - User-specific data that is not a frontend setting (see: settings).

    • pleroma - Pleroma specific metadata about the user pulled from /api/v1/accounts/verify_credentials (excluding the pleroma_settings_store)
  • alerts

  • loadingBar - Managed by react-redux-loading-bar

  • modal

  • user_lists

  • domain_lists

  • status_lists

  • accounts - Data for all accounts you've viewed since launching the page, so they don't have to be downloaded twice.

  • accounts_counters

  • statuses - Data for all statuses you've viewed since launching the page, so they don't have to be downloaded twice.

  • relationships

  • settings - Any frontend configuration values that should be persisted to the backend database. This includes user preferences as well as metadata such as emoji usage counters. It uses pleroma_settings_store to do it if it's available. If there's some other endpoint that handles your value, it doesn't belong here.

  • push_notifications

  • mutes

  • reports

  • contexts

  • compose

  • search

  • media_attachments

  • notifications

  • height_cache

  • custom_emojis

  • identity_proofs

  • lists

  • listEditor

  • listAdder

  • filters

  • conversations

  • suggestions

  • polls

  • trends

  • groups

  • group_relationships

  • group_lists

  • group_editor

  • sidebar

  • patron - Data related to soapbox-patron

  • soapbox - Soapbox specific configuration pulled from /soapbox/soapbox.json. The configuration file isn't required and this map can be empty.

  • instance - Instance data pulled from /api/v1/instance

  • me - The account ID of the currently logged in user, 'null' if loading, and 'false' if no user is logged in.

  • auth - Data used for authentication

    • app - Map containing the app used to make app requests such as register/login and its access token.

    • user - Map containing the access token of the logged in user.