mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-18 21:45:31 +09:00
feat(premium): let self-hosted instances sell premium and gifts (#3025)
This commit is contained in:
1 parent
192cec689a
commit
3736d94d73
159 files changed
+15802
-9067
No files matched your search
+4
-4
@@ -1,7 +1,7 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import RuntimeConfig from '@app/features/app/state/RuntimeConfig';
|
||||
import * as PremiumModalCommands from '@app/features/premium/commands/PremiumModalCommands';
|
||||
import {useCanSendGift} from '@app/features/premium/hooks/useCanSendGift';
|
||||
import * as ModalCommands from '@app/features/ui/commands/ModalCommands';
|
||||
import {MenuBottomSheet, type MenuGroupType} from '@app/features/ui/menu_bottom_sheet/MenuBottomSheet';
|
||||
import {msg} from '@lingui/core/macro';
|
||||
@@ -34,7 +34,7 @@ interface MobileTextareaPlusBottomSheetProps {
|
||||
export const MobileTextareaPlusBottomSheet = observer(
|
||||
({isOpen, onClose, onUploadFile, textareaValue, onUploadAsFile}: MobileTextareaPlusBottomSheetProps) => {
|
||||
const {i18n} = useLingui();
|
||||
const isSelfHosted = RuntimeConfig.isSelfHosted();
|
||||
const canSendGift = useCanSendGift(isOpen);
|
||||
const groups: Array<MenuGroupType> = useMemo(() => {
|
||||
const items = [
|
||||
{
|
||||
@@ -64,7 +64,7 @@ export const MobileTextareaPlusBottomSheet = observer(
|
||||
},
|
||||
});
|
||||
}
|
||||
if (!isSelfHosted) {
|
||||
if (canSendGift) {
|
||||
items.push({
|
||||
icon: <GiftIcon data-flx="channel.textarea.mobile-textarea-plus-bottom-sheet.groups.gift-icon" />,
|
||||
label: i18n._(SEND_GIFT_DESCRIPTOR),
|
||||
@@ -74,7 +74,7 @@ export const MobileTextareaPlusBottomSheet = observer(
|
||||
});
|
||||
}
|
||||
return [{items}];
|
||||
}, [isSelfHosted, onClose, onUploadFile, textareaValue, onUploadAsFile, i18n.locale]);
|
||||
}, [canSendGift, onClose, onUploadFile, textareaValue, onUploadAsFile, i18n.locale]);
|
||||
return (
|
||||
<MenuBottomSheet
|
||||
isOpen={isOpen}
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
|
||||
import * as AccessibilityCommands from '@app/features/accessibility/commands/AccessibilityCommands';
|
||||
import Accessibility from '@app/features/accessibility/state/Accessibility';
|
||||
import RuntimeConfig from '@app/features/app/state/RuntimeConfig';
|
||||
import {CANNOT_SEND_MESSAGES_IN_CHANNEL_DESCRIPTOR} from '@app/features/i18n/utils/CommonMessageDescriptors';
|
||||
import Keybind from '@app/features/input/state/InputKeybind';
|
||||
import * as PremiumModalCommands from '@app/features/premium/commands/PremiumModalCommands';
|
||||
import {useCanSendGift} from '@app/features/premium/hooks/useCanSendGift';
|
||||
import {CheckboxItem} from '@app/features/ui/action_menu/ContextMenu';
|
||||
import {MenuGroup} from '@app/features/ui/action_menu/MenuGroup';
|
||||
import {MenuItem} from '@app/features/ui/action_menu/MenuItem';
|
||||
@@ -87,7 +87,7 @@ export const TextareaPlusMenu = observer(
|
||||
const showStickersButton = Accessibility.showStickersButton;
|
||||
const showEmojiButton = Accessibility.showEmojiButton;
|
||||
const showMessageSendButton = Accessibility.showMessageSendButton;
|
||||
const isSelfHosted = RuntimeConfig.isSelfHosted();
|
||||
const canSendGift = useCanSendGift();
|
||||
const hasTextContent = textareaValue && textareaValue.trim().length > 0;
|
||||
const cannotSendMessagesHint = i18n._(CANNOT_SEND_MESSAGES_IN_CHANNEL_DESCRIPTOR);
|
||||
const cannotUploadFilesHint = i18n._(YOU_DO_NOT_HAVE_PERMISSION_TO_UPLOAD_FILES_DESCRIPTOR);
|
||||
@@ -133,7 +133,7 @@ export const TextareaPlusMenu = observer(
|
||||
{i18n._(UPLOAD_YOUR_MESSAGE_AS_A_FILE_DESCRIPTOR)}
|
||||
</MenuItem>
|
||||
)}
|
||||
{!isSelfHosted && (
|
||||
{canSendGift && (
|
||||
<MenuItem
|
||||
icon={<GiftIcon data-flx="channel.textarea.textarea-plus-menu.gift-icon" />}
|
||||
onClick={() => PremiumModalCommands.open(true)}
|
||||
|
||||
Reference in new issue
Block a user