RocketChat/Rocket.Chat

View on GitHub
apps/meteor/client/providers/SessionProvider.tsx

Summary

Maintainability
A
35 mins
Test Coverage
import { SessionContext } from '@rocket.chat/ui-contexts';
import { Session } from 'meteor/session';
import type { ReactNode } from 'react';
import React from 'react';

import { createReactiveSubscriptionFactory } from '../lib/createReactiveSubscriptionFactory';

const contextValue = {
    query: createReactiveSubscriptionFactory<unknown>((name) => Session.get(name)),
    dispatch: (name: string, value: unknown): void => {
        Session.set(name, value);
    },
};

type SessionProviderProps = {
    children?: ReactNode;
};

const SessionProvider = ({ children }: SessionProviderProps) => <SessionContext.Provider children={children} value={contextValue} />;

export default SessionProvider;