diff --git a/src/components/communitySettings/communityPlatforms/TcCommunityPlatforms.tsx b/src/components/communitySettings/communityPlatforms/TcCommunityPlatforms.tsx index ea137147..fcd8fa71 100644 --- a/src/components/communitySettings/communityPlatforms/TcCommunityPlatforms.tsx +++ b/src/components/communitySettings/communityPlatforms/TcCommunityPlatforms.tsx @@ -10,7 +10,7 @@ import TcGdriveIntegration from './TcGdriveIntegration'; import TcGithubIntegration from './TcGithubIntegration'; import TcMediaWiki from './TcMediaWiki'; import TcNotionIntegration from './TcNotionIntegration'; -import TcTelegram from './tcTelegram/TcTelegram'; +import TcTelegram from './TcTelegram/TcTelegram'; import TcButton from '../../shared/TcButton'; import TcCard from '../../shared/TcCard'; import TcText from '../../shared/TcText'; diff --git a/src/components/communitySettings/communityPlatforms/tcTelegram/TcConnectedTelegram.tsx b/src/components/communitySettings/communityPlatforms/TcTelegram/TcConnectedTelegram.tsx similarity index 100% rename from src/components/communitySettings/communityPlatforms/tcTelegram/TcConnectedTelegram.tsx rename to src/components/communitySettings/communityPlatforms/TcTelegram/TcConnectedTelegram.tsx diff --git a/src/components/communitySettings/communityPlatforms/tcTelegram/TcConnectedTelegramDialog.tsx b/src/components/communitySettings/communityPlatforms/TcTelegram/TcConnectedTelegramDialog.tsx similarity index 100% rename from src/components/communitySettings/communityPlatforms/tcTelegram/TcConnectedTelegramDialog.tsx rename to src/components/communitySettings/communityPlatforms/TcTelegram/TcConnectedTelegramDialog.tsx diff --git a/src/components/communitySettings/communityPlatforms/tcTelegram/TcTelegram.tsx b/src/components/communitySettings/communityPlatforms/TcTelegram/TcTelegram.tsx similarity index 97% rename from src/components/communitySettings/communityPlatforms/tcTelegram/TcTelegram.tsx rename to src/components/communitySettings/communityPlatforms/TcTelegram/TcTelegram.tsx index 3dee13b3..95cb65c8 100644 --- a/src/components/communitySettings/communityPlatforms/tcTelegram/TcTelegram.tsx +++ b/src/components/communitySettings/communityPlatforms/TcTelegram/TcTelegram.tsx @@ -3,7 +3,6 @@ import { CircularProgress } from '@mui/material'; import useAppStore from '@/store/useStore'; -import { truncateCenter } from '@/helpers/helper'; import { StorageService } from '@/services/StorageService'; import { IntegrationPlatform } from '@/utils/enums'; import { IDiscordModifiedCommunity, IPlatformProps } from '@/utils/interfaces'; diff --git a/src/components/communitySettings/communityPlatforms/tcTelegram/TcTelegramIntegrationDialog.tsx b/src/components/communitySettings/communityPlatforms/TcTelegram/TcTelegramIntegrationDialog.tsx similarity index 100% rename from src/components/communitySettings/communityPlatforms/tcTelegram/TcTelegramIntegrationDialog.tsx rename to src/components/communitySettings/communityPlatforms/TcTelegram/TcTelegramIntegrationDialog.tsx diff --git a/src/components/layouts/SwitchPlatform.tsx b/src/components/layouts/SwitchPlatform.tsx index e6a01ce7..0eccb57d 100644 --- a/src/components/layouts/SwitchPlatform.tsx +++ b/src/components/layouts/SwitchPlatform.tsx @@ -27,8 +27,7 @@ const SwitchPlatform = () => { const fetchedPlatforms = community?.platforms.filter( ({ name, disconnectedAt }) => - (name.includes('discord') || name.includes('discourse')) && - !disconnectedAt + ['discord', 'discourse', 'telegram'].some((platform) => name.includes(platform)) && !disconnectedAt ) || []; setPlatforms(fetchedPlatforms); diff --git a/src/components/layouts/shared/TcPrompt.tsx b/src/components/layouts/shared/TcPrompt.tsx index 2aab0215..207b4df0 100644 --- a/src/components/layouts/shared/TcPrompt.tsx +++ b/src/components/layouts/shared/TcPrompt.tsx @@ -49,10 +49,16 @@ function TcPrompt() { message: 'Data extraction is in progress for Discourse. This process may take more than 6 hours to complete.', } - : { - backgroundColor: 'bg-orange', - message: `Data processing is in progress for ${selectedPlatformData.name}. Please check back later.`, - } + : selectedPlatformData.name === 'telegram' + ? { + backgroundColor: 'bg-orange', + message: + 'Data extraction is in progress for Telegram. This process may take more than 6 hours to complete.', + } + : { + backgroundColor: 'bg-orange', + message: `Data processing is in progress for ${selectedPlatformData.name}. Please check back later.`, + } : { backgroundColor: 'bg-orange', message: ( diff --git a/src/components/pages/pageIndex/ActiveMemberComposition.tsx b/src/components/pages/pageIndex/ActiveMemberComposition.tsx index 50b12809..6f6afb91 100644 --- a/src/components/pages/pageIndex/ActiveMemberComposition.tsx +++ b/src/components/pages/pageIndex/ActiveMemberComposition.tsx @@ -22,6 +22,7 @@ const ActiveMemberComposition = () => { const endDate: moment.Moment = moment().subtract(1, 'day'); const startDate: moment.Moment = moment(endDate).subtract(7, 'days'); + const platformId = community?.platforms.find( (platform) => platform.id === selectedPlatform )?.id; @@ -109,7 +110,7 @@ const ActiveMemberComposition = () => { }, [activeMembers]); return ( -
+

@@ -129,7 +130,7 @@ const ActiveMemberComposition = () => { onClick={() => { router.push('/statistics'); }} - className='py-2 px-[5rem]' + className='px-[5rem] py-2' />

diff --git a/src/components/pages/pageIndex/HeatmapChart.tsx b/src/components/pages/pageIndex/HeatmapChart.tsx index 9196c354..688ae3ef 100644 --- a/src/components/pages/pageIndex/HeatmapChart.tsx +++ b/src/components/pages/pageIndex/HeatmapChart.tsx @@ -106,6 +106,16 @@ const HeatmapChart = () => { excludeCategories.length > 0 ? excludeCategories : undefined ); + updateHeatmapData(data); + } else if (platform && platform.name === 'telegram') { + const data = await fetchHeatmapData( + platform.id, + platform.name, + dateRange[0], + dateRange[1], + selectedZone + ); + updateHeatmapData(data); } } catch (error) { @@ -306,7 +316,7 @@ const HeatmapChart = () => { Hourly messages summed over the selected time period.

-
+
} @@ -336,7 +346,7 @@ const HeatmapChart = () => { handleFetchHeatmapByChannels={handleFetchHeatmapByChannels} />
- ) : ( + ) : platform?.name === 'discourse' ? (
{ } />
- )} + ) : null}
diff --git a/src/components/pages/statistics/ActiveMembersComposition.tsx b/src/components/pages/statistics/ActiveMembersComposition.tsx index 747261ac..b055d34d 100644 --- a/src/components/pages/statistics/ActiveMembersComposition.tsx +++ b/src/components/pages/statistics/ActiveMembersComposition.tsx @@ -18,7 +18,7 @@ import ActiveMemberBreakdown from './memberBreakdowns/activeMembers/ActiveMember import StatisticalData from './StatisticalData'; export interface ActiveMembersComposition { - platformType: 'discord' | 'discourse'; + platformType: 'discord' | 'discourse' | 'telegram'; activePeriod: number; isPremiumGuild: boolean; handleDateRange: (range: number) => void; diff --git a/src/components/pages/statistics/DisengagedMembersComposition.tsx b/src/components/pages/statistics/DisengagedMembersComposition.tsx index 3d279ab1..914f6889 100644 --- a/src/components/pages/statistics/DisengagedMembersComposition.tsx +++ b/src/components/pages/statistics/DisengagedMembersComposition.tsx @@ -18,7 +18,7 @@ import DisengagedMembersCompositionBreakdown from './memberBreakdowns/disengaged import StatisticalData from './StatisticalData'; export interface DisengagedMembersComposition { - platformType: 'discord' | 'discourse'; + platformType: 'discord' | 'discourse' | 'telegram'; activePeriod: number; isPremiumGuild: boolean; handleDateRange: (range: number) => void; diff --git a/src/components/pages/statistics/Onboarding.tsx b/src/components/pages/statistics/Onboarding.tsx index 88619e94..bf861e6b 100644 --- a/src/components/pages/statistics/Onboarding.tsx +++ b/src/components/pages/statistics/Onboarding.tsx @@ -18,7 +18,7 @@ import OnboardingMembersBreakdown from './memberBreakdowns/onboardingMembers/Onb import StatisticalData from './StatisticalData'; export interface OnboardingProps { - platformType: 'discord' | 'discourse'; + platformType: 'discord' | 'discourse' | 'telegram'; activePeriod: number; isPremiumGuild: boolean; handleDateRange: (range: number) => void; diff --git a/src/components/pages/statistics/memberBreakdowns/CustomTable.tsx b/src/components/pages/statistics/memberBreakdowns/CustomTable.tsx index 318f58fe..144a8d26 100644 --- a/src/components/pages/statistics/memberBreakdowns/CustomTable.tsx +++ b/src/components/pages/statistics/memberBreakdowns/CustomTable.tsx @@ -652,7 +652,7 @@ const CustomTable: React.FC = ({
) : column.id === 'joinedAt' || column.id === 'joined_at' ? ( - formatDate(row.joinedAt ?? row.joined_at) + row.joinedAt ? formatDate(row.joinedAt) : '-' ) : ( row[column.id] )} diff --git a/src/components/pages/statistics/memberBreakdowns/activeMembers/ActiveMemberBreakdown.tsx b/src/components/pages/statistics/memberBreakdowns/activeMembers/ActiveMemberBreakdown.tsx index ff2ecbd9..73b992e3 100644 --- a/src/components/pages/statistics/memberBreakdowns/activeMembers/ActiveMemberBreakdown.tsx +++ b/src/components/pages/statistics/memberBreakdowns/activeMembers/ActiveMemberBreakdown.tsx @@ -42,7 +42,7 @@ const options: IActivityCompositionOptions[] = [ ]; interface IAcriveMemberBreakdownProps { - platformType: 'discord' | 'discourse'; + platformType: 'discord' | 'discourse' | 'telegram'; } export default function ActiveMemberBreakdown({ diff --git a/src/components/pages/statistics/memberBreakdowns/disengagedMembersComposition/DisengagedMembersCompositionBreakdown.tsx b/src/components/pages/statistics/memberBreakdowns/disengagedMembersComposition/DisengagedMembersCompositionBreakdown.tsx index 46dffb89..f1bf1e00 100644 --- a/src/components/pages/statistics/memberBreakdowns/disengagedMembersComposition/DisengagedMembersCompositionBreakdown.tsx +++ b/src/components/pages/statistics/memberBreakdowns/disengagedMembersComposition/DisengagedMembersCompositionBreakdown.tsx @@ -53,7 +53,7 @@ const options: IActivityCompositionOptions[] = [ ]; interface IDisengagedMembersCompositionBreakdown { - platformType: 'discord' | 'discourse'; + platformType: 'discord' | 'discourse' | 'telegram'; } export default function DisengagedMembersCompositionBreakdown({ @@ -262,7 +262,7 @@ export default function DisengagedMembersCompositionBreakdown({ )} {fetchedData && fetchedData?.totalResults > 3 ? ( -
+
{ '2': 'disengagedMembers', }; - const [activePlatform, setActivePlatform] = useState<'discord' | 'discourse'>( - 'discord' - ); + const [activePlatform, setActivePlatform] = useState< + 'discord' | 'discourse' | 'telegram' + >('discord'); const [loading, setLoading] = useState(true); const [activeMemberDate, setActiveMemberDate] = useState(1); const [onBoardingMemberDate, setOnBoardingMemberDate] = useState(1); @@ -72,9 +72,13 @@ const Statistics = () => { const platform = community?.platforms.find( (platform) => platform.id === selectedPlatform ); - setActivePlatform( - platform?.name.includes('discord') ? 'discord' : 'discourse' - ); + if (platform?.name === 'discord') { + setActivePlatform('discord'); + } else if (platform?.name === 'discourse') { + setActivePlatform('discourse'); + } else if (platform?.name === 'telegram') { + setActivePlatform('telegram'); + } }, [selectedPlatform]); useEffect(() => { diff --git a/src/store/slices/breakdownsSlice.ts b/src/store/slices/breakdownsSlice.ts index 4ab94fad..2b16e4b8 100644 --- a/src/store/slices/breakdownsSlice.ts +++ b/src/store/slices/breakdownsSlice.ts @@ -12,7 +12,7 @@ const createBreakdownsSlice: StateCreator = (set, get) => ({ roles: [], getActiveMemberCompositionTable: async ( platformId: string, - platformType: 'discord' | 'discourse', + platformType: 'discord' | 'discourse' | 'telegram', activityComposition: string[], roles?: IRolesPayload, username?: string, @@ -56,7 +56,9 @@ const createBreakdownsSlice: StateCreator = (set, get) => ({ const baseUrl = platformType === 'discourse' ? `/discourse/member-activity/${platformId}/active-members-composition-table` - : `/member-activity/${platformId}/active-members-composition-table`; + : platformType === 'telegram' + ? `/telegram/member-activity/${platformId}/active-members-composition-table` + : `/member-activity/${platformId}/active-members-composition-table`; const url = `${baseUrl}?${params.toString()}`; @@ -69,7 +71,7 @@ const createBreakdownsSlice: StateCreator = (set, get) => ({ }, getOnboardingMemberCompositionTable: async ( platformId: string, - platformType: 'discord' | 'discourse', + platformType: 'discord' | 'discourse' | 'telegram', activityComposition: string[], roles?: IRolesPayload, username?: string, @@ -113,7 +115,9 @@ const createBreakdownsSlice: StateCreator = (set, get) => ({ const baseUrl = platformType === 'discourse' ? `/discourse/member-activity/${platformId}/active-members-onboarding-table` - : `/member-activity/${platformId}/active-members-onboarding-table`; + : platformType === 'telegram' + ? `/telegram/member-activity/${platformId}/active-members-onboarding-table` + : `/member-activity/${platformId}/active-members-onboarding-table`; const url = `${baseUrl}?${params.toString()}`; @@ -126,7 +130,7 @@ const createBreakdownsSlice: StateCreator = (set, get) => ({ }, getDisengagedMembersCompositionTable: async ( platformId: string, - platformType: 'discord' | 'discourse', + platformType: 'discord' | 'discourse' | 'telegram', activityComposition: string[], roles?: IRolesPayload, username?: string, @@ -170,7 +174,9 @@ const createBreakdownsSlice: StateCreator = (set, get) => ({ const baseUrl = platformType === 'discourse' ? `/discourse/member-activity/${platformId}/disengaged-members-composition-table` - : `/member-activity/${platformId}/disengaged-members-composition-table`; + : platformType === 'telegram' + ? `/telegram/member-activity/${platformId}/disengaged-members-composition-table` + : `/member-activity/${platformId}/disengaged-members-composition-table`; const url = `${baseUrl}?${params.toString()}`; diff --git a/src/store/slices/chartSlice.ts b/src/store/slices/chartSlice.ts index 13d2ff32..4018747c 100644 --- a/src/store/slices/chartSlice.ts +++ b/src/store/slices/chartSlice.ts @@ -19,7 +19,7 @@ const chartSlice: StateCreator = (set, get) => ({ onboardingMembersLoading: false, fetchHeatmapData: async ( platformId: string, - platformType: 'discord' | 'discourse', + platformType: 'discord' | 'discourse' | 'telegram', startDate: string, endDate: string, timeZone: string, @@ -32,7 +32,9 @@ const chartSlice: StateCreator = (set, get) => ({ const endpoint = platformType === 'discourse' ? `/discourse/heatmaps/${platformId}/heatmap-chart` - : `/heatmaps/${platformId}/heatmap-chart`; + : platformType === 'telegram' + ? `/telegram/heatmaps/${platformId}/heatmap-chart` + : `/heatmaps/${platformId}/heatmap-chart`; set(() => ({ isLoading: true })); @@ -71,12 +73,14 @@ const chartSlice: StateCreator = (set, get) => ({ platformId: string, startDate: string, endDate: string, - platformType: 'discord' | 'discourse' + platformType: 'discord' | 'discourse' | 'telegram' ) => { const endpoint = platformType === 'discourse' ? `/discourse/heatmaps/${platformId}/line-graph` - : `/heatmaps/${platformId}/line-graph`; + : platformType === 'telegram' + ? `/telegram/heatmaps/${platformId}/line-graph` + : `/heatmaps/${platformId}/line-graph`; try { set(() => ({ interactionsLoading: true })); diff --git a/src/store/slices/memberInteractionSlice.ts b/src/store/slices/memberInteractionSlice.ts index d2946e39..60c8dcb5 100644 --- a/src/store/slices/memberInteractionSlice.ts +++ b/src/store/slices/memberInteractionSlice.ts @@ -8,13 +8,16 @@ const createHeatmapSlice: StateCreator = (set, get) => ({ memberInteractionRecords: [], getMemberInteraction: async ( platformId: string, - platformType: 'discord' | 'discourse' + platformType: 'discord' | 'discourse' | 'telegram' ) => { try { const endpoint = platformType === 'discourse' ? `/discourse/member-activity/${platformId}/members-interactions-network-graph` - : `/member-activity/${platformId}/members-interactions-network-graph`; + : platformType === 'telegram' + ? `/telegram/member-activity/${platformId}/members-interactions-network-graph` + : `/member-activity/${platformId}/members-interactions-network-graph`; + set(() => ({ isLoading: true })); const { data } = await axiosInstance.post(endpoint); set({ memberInteractionRecords: [...data], isLoading: false }); diff --git a/src/store/types/IBreakdown.ts b/src/store/types/IBreakdown.ts index 7862be2b..ac7dd599 100644 --- a/src/store/types/IBreakdown.ts +++ b/src/store/types/IBreakdown.ts @@ -8,7 +8,7 @@ export default interface IBreakdown { roles: any[]; getActiveMemberCompositionTable: ( platformId: string, - platformType: 'discord' | 'discourse', + platformType: 'discord' | 'discourse' | 'telegram', activityComposition: string[], roles?: IRolesPayload, username?: string, @@ -18,7 +18,7 @@ export default interface IBreakdown { ) => any; getOnboardingMemberCompositionTable: ( platformId: string, - platformType: 'discord' | 'discourse', + platformType: 'discord' | 'discourse' | 'telegram', activityComposition: string[], roles?: IRolesPayload, username?: string, @@ -28,7 +28,7 @@ export default interface IBreakdown { ) => any; getDisengagedMembersCompositionTable: ( platformId: string, - platformType: 'discord' | 'discourse', + platformType: 'discord' | 'discourse' | 'telegram', activityComposition: string[], roles?: IRolesPayload, username?: string, diff --git a/src/store/types/ICharts.ts b/src/store/types/ICharts.ts index 0033983d..b3908c52 100644 --- a/src/store/types/ICharts.ts +++ b/src/store/types/ICharts.ts @@ -14,7 +14,7 @@ export default interface ICharts { selectedChannelsList: any[]; fetchHeatmapData: ( platformId: string, - platformType: 'discord' | 'discourse', + platformType: 'discord' | 'discourse' | 'telegram', startDate: string, endDate: string, timeZone: string, @@ -27,7 +27,7 @@ export default interface ICharts { platformId: string, startDate: string, endDate: string, - platformType: 'discord' | 'discourse', + platformType: 'discord' | 'discourse' | 'telegram', timeZone: string ) => any; fetchActiveMembers: ( diff --git a/src/store/types/IMemberInteraction.ts b/src/store/types/IMemberInteraction.ts index 796fff51..04505eab 100644 --- a/src/store/types/IMemberInteraction.ts +++ b/src/store/types/IMemberInteraction.ts @@ -3,6 +3,6 @@ export default interface IMemberInteraction { memberInteractionRecords: any[]; getMemberInteraction: ( platformId: string, - platformType: 'discord' | 'discourse' + platformType: 'discord' | 'discourse' | 'telegram' ) => any; }