Commit 58e94fc0 by Peter Holmberg

moved state

parent 7a10bf01
import { ThunkAction } from 'redux-thunk';
import { getBackendSrv } from '../services/backend_srv';
import { DashboardAcl, DashboardSearchHit, StoreState } from '../../types';
type ThunkResult<R> = ThunkAction<R, StoreState, undefined, any>;
export type Action = LoadStarredDashboardsAction;
export enum ActionTypes {
LoadStarredDashboards = 'LOAD_STARRED_DASHBOARDS',
}
interface LoadStarredDashboardsAction {
type: ActionTypes.LoadStarredDashboards;
payload: DashboardSearchHit[];
}
const starredDashboardsLoaded = (dashboards: DashboardAcl[]) => ({
type: ActionTypes.LoadStarredDashboards,
payload: dashboards,
});
export function loadStarredDashboards(): ThunkResult<void> {
return async dispatch => {
const starredDashboards = await getBackendSrv().search({ starred: true });
dispatch(starredDashboardsLoaded(starredDashboards));
};
}
import { navIndexReducer as navIndex } from './navModel';
import { locationReducer as location } from './location';
import { appNotificationsReducer as appNotifications } from './appNotification';
import { userReducer as user } from './user';
export default {
navIndex,
location,
appNotifications,
user,
};
import { DashboardSearchHit, UserState } from '../../types';
import { Action, ActionTypes } from '../actions/user';
const initialState: UserState = {
starredDashboards: [] as DashboardSearchHit[],
};
export const userReducer = (state: UserState = initialState, action: Action): UserState => {
switch (action.type) {
case ActionTypes.LoadStarredDashboards:
return { ...state, starredDashboards: action.payload };
}
return state;
};
......@@ -35,11 +35,6 @@ export const loadDashboardPermissions = (items: DashboardAclDTO[]): LoadDashboar
payload: items,
});
const starredDashboardsLoaded = (dashboards: DashboardAcl[]) => ({
type: ActionTypes.LoadStarredDashboards,
payload: dashboards,
});
export function getDashboardPermissions(id: number): ThunkResult<void> {
return async dispatch => {
const permissions = await getBackendSrv().get(`/api/dashboards/id/${id}/permissions`);
......@@ -47,13 +42,6 @@ export function getDashboardPermissions(id: number): ThunkResult<void> {
};
}
export function loadStarredDashboards(): ThunkResult<void> {
return async dispatch => {
const starredDashboards = await getBackendSrv().search({ starred: true });
dispatch(starredDashboardsLoaded(starredDashboards));
};
}
function toUpdateItem(item: DashboardAcl): DashboardAclUpdateDTO {
return {
userId: item.userId,
......
......@@ -11,7 +11,7 @@ import {
setOrganizationName,
updateOrganization,
} from './state/actions';
import { loadStarredDashboards } from '../dashboard/state/actions';
import { loadStarredDashboards } from '../../core/actions/user';
import { NavModel, Organization, OrganizationPreferences, StoreState } from 'app/types';
import { getNavModel } from '../../core/selectors/navModel';
......
......@@ -99,7 +99,7 @@ export class OrgPreferences extends PureComponent<Props> {
function mapStateToProps(state) {
return {
preferences: state.organization.preferences,
starredDashboards: state.organization.starredDashboards,
starredDashboards: state.user.starredDashboards,
};
}
......
import { ThunkAction } from 'redux-thunk';
import { DashboardSearchHit, Organization, OrganizationPreferences, StoreState } from 'app/types';
import { Organization, OrganizationPreferences, StoreState } from 'app/types';
import { getBackendSrv } from '../../../core/services/backend_srv';
type ThunkResult<R> = ThunkAction<R, StoreState, undefined, any>;
......@@ -7,7 +7,6 @@ type ThunkResult<R> = ThunkAction<R, StoreState, undefined, any>;
export enum ActionTypes {
LoadOrganization = 'LOAD_ORGANISATION',
LoadPreferences = 'LOAD_PREFERENCES',
LoadStarredDashboards = 'LOAD_STARRED_DASHBOARDS',
SetOrganizationName = 'SET_ORGANIZATION_NAME',
SetOrganizationTheme = 'SET_ORGANIZATION_THEME',
SetOrganizationHomeDashboard = 'SET_ORGANIZATION_HOME_DASHBOARD',
......@@ -24,11 +23,6 @@ interface LoadPreferencesAction {
payload: OrganizationPreferences;
}
interface LoadStarredDashboardsAction {
type: ActionTypes.LoadStarredDashboards;
payload: DashboardSearchHit[];
}
interface SetOrganizationNameAction {
type: ActionTypes.SetOrganizationName;
payload: string;
......@@ -82,7 +76,6 @@ export const setOrganizationTimezone = (timezone: string) => ({
export type Action =
| LoadOrganizationAction
| LoadPreferencesAction
| LoadStarredDashboardsAction
| SetOrganizationNameAction
| SetOrganizationThemeAction
| SetOrganizationHomeDashboardAction
......
import { DashboardSearchHit, Organization, OrganizationPreferences, OrganizationState } from 'app/types';
import { Organization, OrganizationPreferences, OrganizationState } from 'app/types';
import { Action, ActionTypes } from './actions';
const initialState: OrganizationState = {
organization: {} as Organization,
preferences: {} as OrganizationPreferences,
starredDashboards: [] as DashboardSearchHit[],
};
const organizationReducer = (state = initialState, action: Action): OrganizationState => {
......@@ -15,9 +14,6 @@ const organizationReducer = (state = initialState, action: Action): Organization
case ActionTypes.LoadPreferences:
return { ...state, preferences: action.payload };
case ActionTypes.LoadStarredDashboards:
return { ...state, starredDashboards: action.payload };
case ActionTypes.SetOrganizationName:
return { ...state, organization: { ...state.organization, name: action.payload } };
......
......@@ -6,7 +6,7 @@ import { FolderDTO, FolderState, FolderInfo } from './folders';
import { DashboardState } from './dashboard';
import { DashboardAcl, OrgRole, PermissionLevel } from './acl';
import { ApiKey, ApiKeysState, NewApiKey } from './apiKeys';
import { Invitee, OrgUser, User, UsersState } from './user';
import { Invitee, OrgUser, User, UsersState, UserState } from './user';
import { DataSource, DataSourcesState } from './datasources';
import {
TimeRange,
......@@ -86,6 +86,7 @@ export {
AppNotificationSeverity,
AppNotificationTimeout,
DashboardSearchHit,
UserState,
};
export interface StoreState {
......@@ -100,4 +101,5 @@ export interface StoreState {
users: UsersState;
organization: OrganizationState;
appNotifications: AppNotificationsState;
user: UserState;
}
import { DashboardSearchHit } from './search';
export interface Organization {
name: string;
id: number;
......@@ -14,5 +12,4 @@ export interface OrganizationPreferences {
export interface OrganizationState {
organization: Organization;
preferences: OrganizationPreferences;
starredDashboards: DashboardSearchHit[];
}
export interface OrgUser {
import { DashboardSearchHit } from './search';
export interface OrgUser {
avatarUrl: string;
email: string;
lastSeenAt: string;
......@@ -43,3 +45,7 @@ export interface UsersState {
externalUserMngInfo: string;
hasFetched: boolean;
}
export interface UserState {
starredDashboards: DashboardSearchHit[];
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment