Move toju-app into own its folder
This commit is contained in:
81
toju-app/src/app/store/index.ts
Normal file
81
toju-app/src/app/store/index.ts
Normal file
@@ -0,0 +1,81 @@
|
||||
/**
|
||||
* Root state definition and barrel exports for the NgRx store.
|
||||
*
|
||||
* Three feature slices:
|
||||
* - **messages** - chat messages, reactions, sync state
|
||||
* - **users** - online users, bans, roles, voice state
|
||||
* - **rooms** - servers / rooms, channels, search results
|
||||
*/
|
||||
import { isDevMode } from '@angular/core';
|
||||
import { ActionReducerMap, MetaReducer } from '@ngrx/store';
|
||||
import { messagesReducer, MessagesState } from './messages/messages.reducer';
|
||||
import { usersReducer, UsersState } from './users/users.reducer';
|
||||
import { roomsReducer, RoomsState } from './rooms/rooms.reducer';
|
||||
|
||||
/** Combined root state of the application. */
|
||||
export interface AppState {
|
||||
/** Chat messages feature slice. */
|
||||
messages: MessagesState;
|
||||
/** Users / presence feature slice. */
|
||||
users: UsersState;
|
||||
/** Rooms / servers feature slice. */
|
||||
rooms: RoomsState;
|
||||
}
|
||||
|
||||
/** Top-level reducer map registered with `StoreModule.forRoot()`. */
|
||||
export const reducers: ActionReducerMap<AppState> = {
|
||||
messages: messagesReducer,
|
||||
users: usersReducer,
|
||||
rooms: roomsReducer
|
||||
};
|
||||
|
||||
/** Meta-reducers (e.g. logging) enabled only in development builds. */
|
||||
export const metaReducers: MetaReducer<AppState>[] = isDevMode() ? [] : [];
|
||||
|
||||
// Re-export actions
|
||||
export { MessagesActions } from './messages/messages.actions';
|
||||
export { UsersActions } from './users/users.actions';
|
||||
export { RoomsActions } from './rooms/rooms.actions';
|
||||
|
||||
// Re-export selectors explicitly to avoid conflicts
|
||||
export {
|
||||
selectMessagesState,
|
||||
selectAllMessages,
|
||||
selectCurrentRoomMessages,
|
||||
selectMessageById,
|
||||
selectMessagesLoading,
|
||||
selectCurrentRoomId as selectMessagesCurrentRoomId
|
||||
} from './messages/messages.selectors';
|
||||
|
||||
export {
|
||||
selectUsersState,
|
||||
selectAllUsers,
|
||||
selectCurrentUser,
|
||||
selectCurrentUserId,
|
||||
selectUserById,
|
||||
selectOnlineUsers,
|
||||
selectHostId,
|
||||
selectIsCurrentUserHost as selectIsCurrentUserHostFromUsers,
|
||||
selectBannedUsers
|
||||
} from './users/users.selectors';
|
||||
|
||||
export {
|
||||
selectRoomsState,
|
||||
selectCurrentRoom,
|
||||
selectCurrentRoomId,
|
||||
selectRoomSettings,
|
||||
selectIsCurrentUserHost,
|
||||
selectSavedRooms,
|
||||
selectRoomsLoading
|
||||
} from './rooms/rooms.selectors';
|
||||
|
||||
// Re-export effects
|
||||
export { MessagesEffects } from './messages/messages.effects';
|
||||
export { MessagesSyncEffects } from './messages/messages-sync.effects';
|
||||
export { UsersEffects } from './users/users.effects';
|
||||
export { RoomsEffects } from './rooms/rooms.effects';
|
||||
|
||||
// Re-export types
|
||||
export type { MessagesState } from './messages/messages.reducer';
|
||||
export type { UsersState } from './users/users.reducer';
|
||||
export type { RoomsState } from './rooms/rooms.reducer';
|
||||
Reference in New Issue
Block a user