Add account to antenna webui
This commit is contained in:
parent
69df23d8d9
commit
0d5a6adc43
20 changed files with 644 additions and 1 deletions
47
app/javascript/mastodon/reducers/antenna_adder.js
Normal file
47
app/javascript/mastodon/reducers/antenna_adder.js
Normal file
|
@ -0,0 +1,47 @@
|
|||
import { Map as ImmutableMap, List as ImmutableList } from 'immutable';
|
||||
import {
|
||||
ANTENNA_ADDER_RESET,
|
||||
ANTENNA_ADDER_SETUP,
|
||||
ANTENNA_ADDER_ANTENNAS_FETCH_REQUEST,
|
||||
ANTENNA_ADDER_ANTENNAS_FETCH_SUCCESS,
|
||||
ANTENNA_ADDER_ANTENNAS_FETCH_FAIL,
|
||||
ANTENNA_EDITOR_ADD_ACCOUNT_SUCCESS,
|
||||
ANTENNA_EDITOR_REMOVE_ACCOUNT_SUCCESS,
|
||||
} from '../actions/antennas';
|
||||
|
||||
const initialState = ImmutableMap({
|
||||
accountId: null,
|
||||
|
||||
antennas: ImmutableMap({
|
||||
items: ImmutableList(),
|
||||
loaded: false,
|
||||
isLoading: false,
|
||||
}),
|
||||
});
|
||||
|
||||
export default function antennaAdderReducer(state = initialState, action) {
|
||||
switch(action.type) {
|
||||
case ANTENNA_ADDER_RESET:
|
||||
return initialState;
|
||||
case ANTENNA_ADDER_SETUP:
|
||||
return state.withMutations(map => {
|
||||
map.set('accountId', action.account.get('id'));
|
||||
});
|
||||
case ANTENNA_ADDER_ANTENNAS_FETCH_REQUEST:
|
||||
return state.setIn(['antennas', 'isLoading'], true);
|
||||
case ANTENNA_ADDER_ANTENNAS_FETCH_FAIL:
|
||||
return state.setIn(['antennas', 'isLoading'], false);
|
||||
case ANTENNA_ADDER_ANTENNAS_FETCH_SUCCESS:
|
||||
return state.update('antennas', antennas => antennas.withMutations(map => {
|
||||
map.set('isLoading', false);
|
||||
map.set('loaded', true);
|
||||
map.set('items', ImmutableList(action.antennas.map(item => item.id)));
|
||||
}));
|
||||
case ANTENNA_EDITOR_ADD_ACCOUNT_SUCCESS:
|
||||
return state.updateIn(['antennas', 'items'], antenna => antenna.unshift(action.antennaId));
|
||||
case ANTENNA_EDITOR_REMOVE_ACCOUNT_SUCCESS:
|
||||
return state.updateIn(['antennas', 'items'], antenna => antenna.filterNot(item => item === action.antennaId));
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
}
|
36
app/javascript/mastodon/reducers/antenna_editor.js
Normal file
36
app/javascript/mastodon/reducers/antenna_editor.js
Normal file
|
@ -0,0 +1,36 @@
|
|||
import { Map as ImmutableMap, List as ImmutableList } from 'immutable';
|
||||
import {
|
||||
ANTENNA_ACCOUNTS_FETCH_REQUEST,
|
||||
ANTENNA_ACCOUNTS_FETCH_SUCCESS,
|
||||
ANTENNA_ACCOUNTS_FETCH_FAIL,
|
||||
} from '../actions/antennas';
|
||||
|
||||
const initialState = ImmutableMap({
|
||||
antennaId: null,
|
||||
isSubmitting: false,
|
||||
isChanged: false,
|
||||
title: '',
|
||||
|
||||
accounts: ImmutableMap({
|
||||
items: ImmutableList(),
|
||||
loaded: false,
|
||||
isLoading: false,
|
||||
}),
|
||||
});
|
||||
|
||||
export default function antennaEditorReducer(state = initialState, action) {
|
||||
switch(action.type) {
|
||||
case ANTENNA_ACCOUNTS_FETCH_REQUEST:
|
||||
return state.setIn(['accounts', 'isLoading'], true);
|
||||
case ANTENNA_ACCOUNTS_FETCH_FAIL:
|
||||
return state.setIn(['accounts', 'isLoading'], false);
|
||||
case ANTENNA_ACCOUNTS_FETCH_SUCCESS:
|
||||
return state.update('accounts', accounts => accounts.withMutations(map => {
|
||||
map.set('isLoading', false);
|
||||
map.set('loaded', true);
|
||||
map.set('items', ImmutableList(action.accounts.map(item => item.id)));
|
||||
}));
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
}
|
25
app/javascript/mastodon/reducers/antennas.js
Normal file
25
app/javascript/mastodon/reducers/antennas.js
Normal file
|
@ -0,0 +1,25 @@
|
|||
import {
|
||||
ANTENNAS_FETCH_SUCCESS,
|
||||
} from '../actions/antennas';
|
||||
import { Map as ImmutableMap, fromJS } from 'immutable';
|
||||
|
||||
const initialState = ImmutableMap();
|
||||
|
||||
const normalizeAntenna = (state, antenna) => state.set(antenna.id, fromJS(antenna));
|
||||
|
||||
const normalizeAntennas = (state, antennas) => {
|
||||
antennas.forEach(antenna => {
|
||||
state = normalizeAntenna(state, antenna);
|
||||
});
|
||||
|
||||
return state;
|
||||
};
|
||||
|
||||
export default function antennas(state = initialState, action) {
|
||||
switch(action.type) {
|
||||
case ANTENNAS_FETCH_SUCCESS:
|
||||
return normalizeAntennas(state, action.antennas);
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
}
|
|
@ -28,6 +28,9 @@ import custom_emojis from './custom_emojis';
|
|||
import lists from './lists';
|
||||
import listEditor from './list_editor';
|
||||
import listAdder from './list_adder';
|
||||
import antennas from './antennas';
|
||||
import antennaEditor from './antenna_editor';
|
||||
import antennaAdder from './antenna_adder';
|
||||
import filters from './filters';
|
||||
import conversations from './conversations';
|
||||
import suggestions from './suggestions';
|
||||
|
@ -74,6 +77,9 @@ const reducers = {
|
|||
lists,
|
||||
listEditor,
|
||||
listAdder,
|
||||
antennas,
|
||||
antennaEditor,
|
||||
antennaAdder,
|
||||
filters,
|
||||
conversations,
|
||||
suggestions,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue