mirror of
https://github.com/mattermost/mattermost-mobile.git
synced 2026-11-05 18:38:54 +00:00
* Mattermost Blocks * Move block renderer to its own components folder * Sync translation layer * UX fixes * Refactor button to use the button component * Code review * Fix CI * Add animations to collapse blocks * Add unit tests * Add e2e tests and related fixes * Address coderabbit comments * Address UX comments * Address feedback * Address coderabbit comments * Fix snapshots * Sync with webapp translation * Add node limit to button markdown node * Address feedback * i18n-extract * Fix test * Move image utils to the utils folder * Remove unneeded style * Revert build script change --------- Co-authored-by: Mattermost Build <build@mattermost.com>
57 lines
1.6 KiB
TypeScript
57 lines
1.6 KiB
TypeScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
import React, {useMemo, type ReactNode} from 'react';
|
|
|
|
import {
|
|
MmBlocksLayoutWidthContext,
|
|
MmBlocksRenderContext,
|
|
type MmBlocksInlineMarkdownActions,
|
|
type MmBlocksRenderContextValue,
|
|
} from './context';
|
|
|
|
import type {AvailableScreens} from '@typings/screens/navigation';
|
|
|
|
export type MmBlocksContextProviderProps = {
|
|
channelId: string;
|
|
location: AvailableScreens;
|
|
postId: string;
|
|
children: ReactNode;
|
|
imagesMetadata?: Record<string, PostImage>;
|
|
inlineMarkdownActions?: MmBlocksInlineMarkdownActions;
|
|
layoutWidth?: number;
|
|
};
|
|
|
|
export const MmBlocksContextProvider = ({
|
|
channelId,
|
|
location,
|
|
postId,
|
|
children,
|
|
imagesMetadata,
|
|
inlineMarkdownActions,
|
|
layoutWidth,
|
|
}: MmBlocksContextProviderProps) => {
|
|
const renderContextValue = useMemo(
|
|
(): MmBlocksRenderContextValue => ({
|
|
channelId,
|
|
location,
|
|
postId,
|
|
imagesMetadata,
|
|
inlineMarkdownActions: inlineMarkdownActions ?? {},
|
|
}),
|
|
[channelId, imagesMetadata, inlineMarkdownActions, location, postId],
|
|
);
|
|
|
|
return (
|
|
<MmBlocksRenderContext.Provider value={renderContextValue}>
|
|
<MmBlocksLayoutWidthContext.Provider value={layoutWidth}>
|
|
{children}
|
|
</MmBlocksLayoutWidthContext.Provider>
|
|
</MmBlocksRenderContext.Provider>
|
|
);
|
|
};
|
|
|
|
export type MmBlocksExpandedContentPayload = MmBlocksRenderContextValue & {
|
|
renderContent: () => ReactNode;
|
|
};
|