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

This commit is contained in:
upstream-mirror
2026-09-16 01:21:02 +05:00
commit 30810eecd7
10161 changed files with 987110 additions and 0 deletions

View 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);

View 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,
};
};

View 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,
});

View 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,
},
});