WIP pl-api migration
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
import { List as ImmutableList, Map as ImmutableMap, Record as ImmutableRecord, fromJS } from 'immutable';
|
||||
import { Map as ImmutableMap } from 'immutable';
|
||||
|
||||
import { STATUS_IMPORT, STATUSES_IMPORT } from 'soapbox/actions/importer';
|
||||
import {
|
||||
@ -8,34 +8,19 @@ import {
|
||||
} from 'soapbox/actions/scheduled-statuses';
|
||||
import { STATUS_CREATE_SUCCESS } from 'soapbox/actions/statuses';
|
||||
|
||||
import type { Status, ScheduledStatus } from 'pl-api';
|
||||
import type { AnyAction } from 'redux';
|
||||
import type { StatusVisibility } from 'soapbox/normalizers/status';
|
||||
import type { APIEntity } from 'soapbox/types/entities';
|
||||
|
||||
const ScheduledStatusRecord = ImmutableRecord({
|
||||
id: '',
|
||||
scheduled_at: new Date(),
|
||||
media_attachments: null as ImmutableList<ImmutableMap<string, any>> | null,
|
||||
text: '',
|
||||
in_reply_to_id: null as string | null,
|
||||
media_ids: null as ImmutableList<string> | null,
|
||||
sensitive: false,
|
||||
spoiler_text: '',
|
||||
visibility: 'public' as StatusVisibility,
|
||||
poll: null as ImmutableMap<string, any> | null,
|
||||
});
|
||||
|
||||
type ScheduledStatus = ReturnType<typeof ScheduledStatusRecord>;
|
||||
type State = ImmutableMap<string, ScheduledStatus>;
|
||||
|
||||
const initialState: State = ImmutableMap();
|
||||
|
||||
const importStatus = (state: State, { params, ...status }: APIEntity) => {
|
||||
const importStatus = (state: State, status: Status | ScheduledStatus) => {
|
||||
if (!status.scheduled_at) return state;
|
||||
return state.set(status.id, ScheduledStatusRecord(ImmutableMap(fromJS({ ...status, ...params }))));
|
||||
return state.set(status.id, status);
|
||||
};
|
||||
|
||||
const importStatuses = (state: State, statuses: APIEntity[]) =>
|
||||
const importStatuses = (state: State, statuses: Array<Status | ScheduledStatus>) =>
|
||||
state.withMutations(mutable => statuses.forEach(status => importStatus(mutable, status)));
|
||||
|
||||
const deleteStatus = (state: State, statusId: string) => state.delete(statusId);
|
||||
@ -56,7 +41,4 @@ const scheduled_statuses = (state: State = initialState, action: AnyAction) => {
|
||||
}
|
||||
};
|
||||
|
||||
export {
|
||||
ScheduledStatus,
|
||||
scheduled_statuses as default,
|
||||
};
|
||||
export { scheduled_statuses as default };
|
||||
|
||||
Reference in New Issue
Block a user