snapshot of https://github.com/RocketChat/Rocket.Chat.git (develop, 2026-09-16; blobs > 131072B omitted)
Some checks failed
Create issues from TODOs / todos (push) Failing after 3s
Close inactive issues / close-issues (push) Has been cancelled
Deploy GitHub Pages / deploy-preview (push) Has been cancelled
CI / ⚙️ Variables Setup (push) Has been cancelled
CI / ⚙️ Test Guard (push) Has been cancelled
CI / 🚀 Notify external services - draft (push) Has been cancelled
CI / 📦 Build Packages (push) Has been cancelled
CI / 📦 Meteor Build (coverage) (push) Has been cancelled
CI / 📦 Meteor Build (production) (push) Has been cancelled
CI / 🚢 Build Docker (amd64, [account-service presence-service omnichannel-transcript-service], ${{ (github.event_name != 'release' && github.ref != 'refs/heads/develop') && 'coverage' || 'production' }}) (push) Has been cancelled
CI / 🚢 Build Docker (amd64, [account-service presence-service omnichannel-transcript-service], fips) (push) Has been cancelled
CI / 🚢 Build Docker (amd64, [authorization-service queue-worker-service ddp-streamer-service], ${{ (github.event_name != 'release' && github.ref != 'refs/heads/develop') && 'coverage' || 'production' }}) (push) Has been cancelled
CI / 🚢 Build Docker (amd64, [authorization-service queue-worker-service ddp-streamer-service], fips) (push) Has been cancelled
CI / 🚢 Build Docker (amd64, [rocketchat], ${{ (github.event_name != 'release' && github.ref != 'refs/heads/develop') && 'coverage' || 'production' }}) (push) Has been cancelled
CI / 🚢 Build Docker (amd64, [rocketchat], coverage) (push) Has been cancelled
CI / 🚢 Build Docker (amd64, [rocketchat], fips) (push) Has been cancelled
CI / 🚢 Build Docker (arm64, [account-service presence-service omnichannel-transcript-service], ${{ (github.event_name != 'release' && github.ref != 'refs/heads/develop') && 'coverage' || 'production' }}) (push) Has been cancelled
CI / 🚢 Build Docker (arm64, [authorization-service queue-worker-service ddp-streamer-service], ${{ (github.event_name != 'release' && github.ref != 'refs/heads/develop') && 'coverage' || 'production' }}) (push) Has been cancelled
CI / 🚢 Build Docker (arm64, [rocketchat], ${{ (github.event_name != 'release' && github.ref != 'refs/heads/develop') && 'coverage' || 'production' }}) (push) Has been cancelled
CI / 🚢 Build Docker (arm64, [rocketchat], coverage) (push) Has been cancelled
CI / 🚢 Publish Docker Images (ghcr.io) (push) Has been cancelled
CI / 📦 Track Image Sizes (push) Has been cancelled
CI / 🔎 Code Check - Action Lint (push) Has been cancelled
CI / 🔎 Code Check (push) Has been cancelled
CI / 🔨 Test Storybook (push) Has been cancelled
CI / 🔨 Test Unit (push) Has been cancelled
CI / 🔨 Test API (CE) (push) Has been cancelled
CI / 🔨 Test API Livechat (CE) (push) Has been cancelled
CI / 🔨 Test UI (CE) (push) Has been cancelled
CI / 🔨 Test API (EE) (push) Has been cancelled
CI / 🔨 Test API Livechat (EE) (push) Has been cancelled
CI / 🔨 Test API Apps (deno-runtime - EE) (push) Has been cancelled
CI / 🔨 Test UI (EE) (push) Has been cancelled
CI / 🔨 Test API (FIPS) (push) Has been cancelled
CI / 🔨 Test API Livechat (FIPS) (push) Has been cancelled
CI / 🔨 Test UI (FIPS) (push) Has been cancelled
CI / 🔨 Test Federation Matrix (push) Has been cancelled
CI / 📊 Report Coverage (push) Has been cancelled
CI / ✅ Tests Done (push) Has been cancelled
CI / 🚀 Publish build assets (push) Has been cancelled
CI / 🚀 Publish Docker Images (DockerHub) (push) Has been cancelled
CI / 🚀 Notify external services (push) Has been cancelled
CI / Update Version Durability (push) Has been cancelled
Release / Release (push) Has been cancelled
Auto-close duplicate issues / auto-close-duplicates (push) Failing after 1s
Code scanning - action / CodeQL-Build (push) Failing after 1s
Some checks failed
Create issues from TODOs / todos (push) Failing after 3s
Close inactive issues / close-issues (push) Has been cancelled
Deploy GitHub Pages / deploy-preview (push) Has been cancelled
CI / ⚙️ Variables Setup (push) Has been cancelled
CI / ⚙️ Test Guard (push) Has been cancelled
CI / 🚀 Notify external services - draft (push) Has been cancelled
CI / 📦 Build Packages (push) Has been cancelled
CI / 📦 Meteor Build (coverage) (push) Has been cancelled
CI / 📦 Meteor Build (production) (push) Has been cancelled
CI / 🚢 Build Docker (amd64, [account-service presence-service omnichannel-transcript-service], ${{ (github.event_name != 'release' && github.ref != 'refs/heads/develop') && 'coverage' || 'production' }}) (push) Has been cancelled
CI / 🚢 Build Docker (amd64, [account-service presence-service omnichannel-transcript-service], fips) (push) Has been cancelled
CI / 🚢 Build Docker (amd64, [authorization-service queue-worker-service ddp-streamer-service], ${{ (github.event_name != 'release' && github.ref != 'refs/heads/develop') && 'coverage' || 'production' }}) (push) Has been cancelled
CI / 🚢 Build Docker (amd64, [authorization-service queue-worker-service ddp-streamer-service], fips) (push) Has been cancelled
CI / 🚢 Build Docker (amd64, [rocketchat], ${{ (github.event_name != 'release' && github.ref != 'refs/heads/develop') && 'coverage' || 'production' }}) (push) Has been cancelled
CI / 🚢 Build Docker (amd64, [rocketchat], coverage) (push) Has been cancelled
CI / 🚢 Build Docker (amd64, [rocketchat], fips) (push) Has been cancelled
CI / 🚢 Build Docker (arm64, [account-service presence-service omnichannel-transcript-service], ${{ (github.event_name != 'release' && github.ref != 'refs/heads/develop') && 'coverage' || 'production' }}) (push) Has been cancelled
CI / 🚢 Build Docker (arm64, [authorization-service queue-worker-service ddp-streamer-service], ${{ (github.event_name != 'release' && github.ref != 'refs/heads/develop') && 'coverage' || 'production' }}) (push) Has been cancelled
CI / 🚢 Build Docker (arm64, [rocketchat], ${{ (github.event_name != 'release' && github.ref != 'refs/heads/develop') && 'coverage' || 'production' }}) (push) Has been cancelled
CI / 🚢 Build Docker (arm64, [rocketchat], coverage) (push) Has been cancelled
CI / 🚢 Publish Docker Images (ghcr.io) (push) Has been cancelled
CI / 📦 Track Image Sizes (push) Has been cancelled
CI / 🔎 Code Check - Action Lint (push) Has been cancelled
CI / 🔎 Code Check (push) Has been cancelled
CI / 🔨 Test Storybook (push) Has been cancelled
CI / 🔨 Test Unit (push) Has been cancelled
CI / 🔨 Test API (CE) (push) Has been cancelled
CI / 🔨 Test API Livechat (CE) (push) Has been cancelled
CI / 🔨 Test UI (CE) (push) Has been cancelled
CI / 🔨 Test API (EE) (push) Has been cancelled
CI / 🔨 Test API Livechat (EE) (push) Has been cancelled
CI / 🔨 Test API Apps (deno-runtime - EE) (push) Has been cancelled
CI / 🔨 Test UI (EE) (push) Has been cancelled
CI / 🔨 Test API (FIPS) (push) Has been cancelled
CI / 🔨 Test API Livechat (FIPS) (push) Has been cancelled
CI / 🔨 Test UI (FIPS) (push) Has been cancelled
CI / 🔨 Test Federation Matrix (push) Has been cancelled
CI / 📊 Report Coverage (push) Has been cancelled
CI / ✅ Tests Done (push) Has been cancelled
CI / 🚀 Publish build assets (push) Has been cancelled
CI / 🚀 Publish Docker Images (DockerHub) (push) Has been cancelled
CI / 🚀 Notify external services (push) Has been cancelled
CI / Update Version Durability (push) Has been cancelled
Release / Release (push) Has been cancelled
Auto-close duplicate issues / auto-close-duplicates (push) Failing after 1s
Code scanning - action / CodeQL-Build (push) Failing after 1s
This commit is contained in:
30
apps/meteor/client/contexts/AppsContext.tsx
Normal file
30
apps/meteor/client/contexts/AppsContext.tsx
Normal file
@@ -0,0 +1,30 @@
|
||||
import type { AppClientManager } from '@rocket.chat/apps/dist/client/AppClientManager';
|
||||
import type { IPermission } from '@rocket.chat/apps-engine/definition/permissions/IPermission';
|
||||
import type { ISetting } from '@rocket.chat/apps-engine/definition/settings';
|
||||
import type { Serialized } from '@rocket.chat/core-typings';
|
||||
import { createContext } from 'react';
|
||||
|
||||
import type { IAppExternalURL } from '../definitions/IAppExternalURL';
|
||||
import type { ICategory } from '../definitions/ICategory';
|
||||
import type { App } from '../views/marketplace/types';
|
||||
|
||||
export interface IAppsOrchestrator {
|
||||
load(): Promise<void>;
|
||||
getAppClientManager(): AppClientManager;
|
||||
handleError(error: unknown): void;
|
||||
getInstalledApps(): Promise<App[]>;
|
||||
getAppsFromMarketplace(isAdminUser?: boolean): Promise<{ apps: App[]; error?: unknown }>;
|
||||
getAppsOnBundle(bundleId: string): Promise<App[]>;
|
||||
getApp(appId: string): Promise<App>;
|
||||
setAppSettings(appId: string, settings: ISetting[]): Promise<void>;
|
||||
installApp(appId: string, version: string, permissionsGranted?: IPermission[]): Promise<App>;
|
||||
updateApp(appId: string, version: string, permissionsGranted?: IPermission[]): Promise<App>;
|
||||
buildExternalUrl(appId: string, purchaseType?: 'buy' | 'subscription', details?: boolean): Promise<IAppExternalURL>;
|
||||
buildExternalAppRequest(appId: string): Promise<{ url: string }>;
|
||||
buildIncompatibleExternalUrl(appId: string, appVersion: string, action: string): Promise<IAppExternalURL>;
|
||||
getCategories(): Promise<Serialized<ICategory[]>>;
|
||||
}
|
||||
|
||||
type AppsContextValue = IAppsOrchestrator | undefined;
|
||||
|
||||
export const AppsContext = createContext<AppsContextValue>(undefined);
|
||||
80
apps/meteor/client/contexts/EmojiPickerContext.ts
Normal file
80
apps/meteor/client/contexts/EmojiPickerContext.ts
Normal file
@@ -0,0 +1,80 @@
|
||||
import { createContext, useContext, useMemo } from 'react';
|
||||
|
||||
import type { EmojiPickerItem, CategoriesIndexes } from '../lib/emoji';
|
||||
|
||||
type EmojiPickerContextValue = {
|
||||
open: (ref: Element, callback: (emoji: string) => void) => void;
|
||||
isOpen: boolean;
|
||||
close: () => void;
|
||||
emojiToPreview: { emoji: string; name: string } | null;
|
||||
handlePreview: (emoji: string, name: string) => void;
|
||||
handleRemovePreview: () => void;
|
||||
addRecentEmoji: (emoji: string) => void;
|
||||
emojiListByCategory: EmojiPickerItem[];
|
||||
recentEmojis: string[];
|
||||
setRecentEmojis: (emoji: string[]) => void;
|
||||
actualTone: number;
|
||||
currentCategory: string;
|
||||
setCurrentCategory: (category: string) => void;
|
||||
customItemsLimit: number;
|
||||
setCustomItemsLimit: (limit: number) => void;
|
||||
setActualTone: (tone: number) => void;
|
||||
quickReactions: { emoji: string; image: string }[];
|
||||
categoriesIndexes: CategoriesIndexes;
|
||||
};
|
||||
|
||||
export const EmojiPickerContext = createContext<EmojiPickerContextValue | undefined>(undefined);
|
||||
const useEmojiPickerContext = (): EmojiPickerContextValue => {
|
||||
const context = useContext(EmojiPickerContext);
|
||||
if (!context) {
|
||||
throw new Error('Must be running in EmojiPicker Context');
|
||||
}
|
||||
|
||||
return context;
|
||||
};
|
||||
|
||||
export const useEmojiPicker = () => {
|
||||
const { open, isOpen, close } = useEmojiPickerContext();
|
||||
// Stable identity: consumers (e.g. ChatAPI.emojiPicker) use this as a memo
|
||||
// dependency, so returning a fresh object each render invalidates them and
|
||||
// cascades re-renders across the whole message list.
|
||||
return useMemo(() => ({ open, isOpen, close }), [open, isOpen, close]);
|
||||
};
|
||||
|
||||
export const usePreviewEmoji = () => ({
|
||||
emojiToPreview: useEmojiPickerContext().emojiToPreview,
|
||||
handlePreview: useEmojiPickerContext().handlePreview,
|
||||
handleRemovePreview: useEmojiPickerContext().handleRemovePreview,
|
||||
});
|
||||
|
||||
export const useEmojiPickerData = () => {
|
||||
const {
|
||||
actualTone,
|
||||
addRecentEmoji,
|
||||
currentCategory,
|
||||
categoriesIndexes,
|
||||
customItemsLimit,
|
||||
emojiListByCategory,
|
||||
quickReactions,
|
||||
recentEmojis,
|
||||
setActualTone,
|
||||
setCurrentCategory,
|
||||
setCustomItemsLimit,
|
||||
setRecentEmojis,
|
||||
} = useEmojiPickerContext();
|
||||
|
||||
return {
|
||||
addRecentEmoji,
|
||||
emojiListByCategory,
|
||||
recentEmojis,
|
||||
setRecentEmojis,
|
||||
actualTone,
|
||||
currentCategory,
|
||||
categoriesIndexes,
|
||||
setCurrentCategory,
|
||||
customItemsLimit,
|
||||
setCustomItemsLimit,
|
||||
setActualTone,
|
||||
quickReactions,
|
||||
};
|
||||
};
|
||||
13
apps/meteor/client/contexts/ImageGalleryContext.ts
Normal file
13
apps/meteor/client/contexts/ImageGalleryContext.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import { createContext } from 'react';
|
||||
|
||||
type ImageGalleryContextValue = {
|
||||
imageId: string;
|
||||
isOpen: boolean;
|
||||
onClose: () => void;
|
||||
};
|
||||
|
||||
export const ImageGalleryContext = createContext<ImageGalleryContextValue>({
|
||||
imageId: '',
|
||||
isOpen: false,
|
||||
onClose: () => undefined,
|
||||
});
|
||||
33
apps/meteor/client/contexts/OmnichannelContext.ts
Normal file
33
apps/meteor/client/contexts/OmnichannelContext.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import type { OmichannelRoutingConfig, Inquiries, ILivechatPriority, Serialized } from '@rocket.chat/core-typings';
|
||||
import { createContext } from 'react';
|
||||
|
||||
export type OmnichannelContextValue = {
|
||||
inquiries: Inquiries;
|
||||
enabled: boolean;
|
||||
isEnterprise: boolean;
|
||||
agentAvailable: boolean;
|
||||
routeConfig?: OmichannelRoutingConfig;
|
||||
showOmnichannelQueueLink: boolean;
|
||||
isOverMacLimit: boolean;
|
||||
livechatPriorities: {
|
||||
data: Serialized<ILivechatPriority>[];
|
||||
isLoading: boolean;
|
||||
isError: boolean;
|
||||
enabled: boolean;
|
||||
};
|
||||
};
|
||||
|
||||
export const OmnichannelContext = createContext<OmnichannelContextValue>({
|
||||
inquiries: { enabled: false },
|
||||
enabled: false,
|
||||
isEnterprise: false,
|
||||
agentAvailable: false,
|
||||
showOmnichannelQueueLink: false,
|
||||
isOverMacLimit: false,
|
||||
livechatPriorities: {
|
||||
data: [],
|
||||
isLoading: false,
|
||||
isError: false,
|
||||
enabled: false,
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user