mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
moved state
This commit is contained in:
28
public/app/core/actions/user.ts
Normal file
28
public/app/core/actions/user.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
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));
|
||||
};
|
||||
}
|
@@ -1,9 +1,11 @@
|
||||
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,
|
||||
};
|
||||
|
15
public/app/core/reducers/user.ts
Normal file
15
public/app/core/reducers/user.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
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,
|
||||
};
|
||||
}
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
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
|
||||
|
@@ -1,10 +1,9 @@
|
||||
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;
|
||||
}
|
||||
|
@@ -1,5 +1,3 @@
|
||||
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[];
|
||||
}
|
||||
|
@@ -1,4 +1,6 @@
|
||||
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[];
|
||||
}
|
||||
|
Reference in New Issue
Block a user