import { createReducer } from '@reduxjs/toolkit';

import { submitMarkersAction, fetchMarkers } from 'mastodon/actions/markers';
import { compareId } from 'mastodon/compare_id';

const initialState = {
  home: '0',
  notifications: '0',
};

export const markersReducer = createReducer(initialState, (builder) => {
  builder.addCase(
    submitMarkersAction.fulfilled,
    (state, { payload: { home, notifications } }) => {
      if (home) state.home = home;
      if (notifications) state.notifications = notifications;
    },
  );
  builder.addCase(
    fetchMarkers.fulfilled,
    (
      state,
      {
        payload: {
          markers: { home, notifications },
        },
      },
    ) => {
      if (home && compareId(home.last_read_id, state.home) > 0)
        state.home = home.last_read_id;
      if (
        notifications &&
        compareId(notifications.last_read_id, state.notifications) > 0
      )
        state.notifications = notifications.last_read_id;
    },
  );
});