- {/* TODO: move one-on-one logic to its own component */}
- {selectedTemplate.id === 'oneOnOneAction' ? (
-
-
Teammate
-
-
- {showOrgPicker && (
- <>
-
Organization
-
- >
- )}
-
- ) : (
-
- )}
-
+
{type === 'retrospective' && (
<>
@@ -407,27 +315,16 @@ const ActivityDetailsSidebar = (props: Props) => {
- {oneOnOneTeamInput && (
-
- )}
{error &&
{error.message}}
- {selectedTemplate.id !== 'oneOnOneAction' && (
- <>
-
- {/* TODO: scheduling meeting does not work with one-on-one https://github.com/ParabolInc/parabol/issues/8820 */}
-
- >
- )}
+
+ {/* TODO: scheduling meeting does not work with one-on-one https://github.com/ParabolInc/parabol/issues/8820 */}
+
handleStartActivity()}
waiting={submitting}
diff --git a/packages/client/components/ActivityLibrary/ActivityLibrary.tsx b/packages/client/components/ActivityLibrary/ActivityLibrary.tsx
index 921b2bb7b48..2bf9f7cb5ab 100644
--- a/packages/client/components/ActivityLibrary/ActivityLibrary.tsx
+++ b/packages/client/components/ActivityLibrary/ActivityLibrary.tsx
@@ -90,7 +90,6 @@ const query = graphql`
}
organizations {
featureFlags {
- oneOnOne
aiTemplate
}
}
@@ -198,7 +197,6 @@ export const ActivityLibrary = (props: Props) => {
const data = usePreloadedQuery(query, queryRef)
const {viewer} = data
const {featureFlags, availableTemplates, organizations} = viewer
- const hasOneOnOneFeatureFlag = !!organizations.find((org) => org.featureFlags.oneOnOne)
const hasAITemplateFeatureFlag = !!organizations.find((org) => org.featureFlags.aiTemplate)
const setSearch = (value: string) => {
@@ -211,9 +209,6 @@ export const ActivityLibrary = (props: Props) => {
const templates = useMemo(() => {
const templatesMap = availableTemplates.edges.map((edge) => edge.node)
- if (!hasOneOnOneFeatureFlag) {
- return templatesMap.filter((template) => template.id !== 'oneOnOneAction')
- }
return templatesMap
}, [availableTemplates])
diff --git a/packages/client/components/ActivityLibrary/OneOnOneTeamStatus.tsx b/packages/client/components/ActivityLibrary/OneOnOneTeamStatus.tsx
deleted file mode 100644
index 53b188b9653..00000000000
--- a/packages/client/components/ActivityLibrary/OneOnOneTeamStatus.tsx
+++ /dev/null
@@ -1,28 +0,0 @@
-import React, {Suspense} from 'react'
-import {OneOnOneTeamStatusComponentQuery} from '../../__generated__/OneOnOneTeamStatusComponentQuery.graphql'
-import useQueryLoaderNow from '../../hooks/useQueryLoaderNow'
-import {Loader} from '../../utils/relay/renderLoader'
-import {LoaderSize} from '../../types/constEnums'
-import OneOnOneTeamStatusComponent, {
- oneOnOneTeamStatusComponentQuery
-} from './OneOnOneTeamStatusComponent'
-
-interface Props {
- email: string
- orgId: string
- name: string
-}
-
-const OneOnOneTeamStatus = ({email, orgId, name}: Props) => {
- const queryRef = useQueryLoaderNow(
- oneOnOneTeamStatusComponentQuery,
- {email, orgId}
- )
- return (
- }>
- {queryRef && }
-
- )
-}
-
-export default OneOnOneTeamStatus
diff --git a/packages/client/components/ActivityLibrary/OneOnOneTeamStatusComponent.tsx b/packages/client/components/ActivityLibrary/OneOnOneTeamStatusComponent.tsx
deleted file mode 100644
index 4cbb05d129a..00000000000
--- a/packages/client/components/ActivityLibrary/OneOnOneTeamStatusComponent.tsx
+++ /dev/null
@@ -1,40 +0,0 @@
-import React from 'react'
-import graphql from 'babel-plugin-relay/macro'
-import {PreloadedQuery, usePreloadedQuery} from 'react-relay'
-import {OneOnOneTeamStatusComponentQuery} from '../../__generated__/OneOnOneTeamStatusComponentQuery.graphql'
-
-export const oneOnOneTeamStatusComponentQuery = graphql`
- query OneOnOneTeamStatusComponentQuery($email: Email!, $orgId: ID!) {
- viewer {
- organization(orgId: $orgId) {
- oneOnOneTeam(email: $email) {
- id
- name
- }
- }
- }
- }
-`
-
-interface Props {
- queryRef: PreloadedQuery
- name: string
-}
-
-const OneOnOneTeamStatusComponent = (props: Props) => {
- const {queryRef, name} = props
- const data = usePreloadedQuery(
- oneOnOneTeamStatusComponentQuery,
- queryRef
- )
-
- const team = data.viewer.organization?.oneOnOneTeam
-
- return (
-
- {team ? `"${team.name}" team will be used` : `A new team will be created for you and ${name}`}
-
- )
-}
-
-export default OneOnOneTeamStatusComponent
diff --git a/packages/client/mutations/StartCheckInMutation.ts b/packages/client/mutations/StartCheckInMutation.ts
index 3d4b1060d56..337b72bb0b3 100644
--- a/packages/client/mutations/StartCheckInMutation.ts
+++ b/packages/client/mutations/StartCheckInMutation.ts
@@ -16,12 +16,8 @@ graphql`
`
const mutation = graphql`
- mutation StartCheckInMutation(
- $teamId: ID
- $gcalInput: CreateGcalEventInput
- $oneOnOneTeamInput: CreateOneOnOneTeamInput
- ) {
- startCheckIn(teamId: $teamId, gcalInput: $gcalInput, oneOnOneTeamInput: $oneOnOneTeamInput) {
+ mutation StartCheckInMutation($teamId: ID!, $gcalInput: CreateGcalEventInput) {
+ startCheckIn(teamId: $teamId, gcalInput: $gcalInput) {
... on ErrorPayload {
error {
message
diff --git a/packages/server/database/types/Team.ts b/packages/server/database/types/Team.ts
index e05dd91083e..0e6055d6281 100644
--- a/packages/server/database/types/Team.ts
+++ b/packages/server/database/types/Team.ts
@@ -17,7 +17,6 @@ interface Input {
orgId: string
qualAIMeetingsCount?: number
isOnboardTeam?: boolean
- isOneOnOneTeam?: boolean
giveKudosWithEmoji?: boolean
kudosEmoji?: string
updatedAt?: Date
@@ -37,7 +36,6 @@ export default class Team {
trialStartDate?: Date | null
orgId: string
isOnboardTeam: boolean
- isOneOnOneTeam?: boolean
giveKudosWithEmoji: boolean
kudosEmoji: string
qualAIMeetingsCount: number
@@ -50,7 +48,6 @@ export default class Team {
id,
isArchived,
isOnboardTeam,
- isOneOnOneTeam,
giveKudosWithEmoji,
kudosEmoji,
lastMeetingType,
@@ -74,7 +71,6 @@ export default class Team {
this.lastMeetingType = lastMeetingType ?? 'retrospective'
this.isArchived = isArchived ?? false
this.isOnboardTeam = isOnboardTeam ?? false
- this.isOneOnOneTeam = isOneOnOneTeam ?? false
this.giveKudosWithEmoji = giveKudosWithEmoji ?? true
this.kudosEmoji = kudosEmoji ?? 'heart'
this.isPaid = isPaid ?? true
diff --git a/packages/server/graphql/mutations/endCheckIn.ts b/packages/server/graphql/mutations/endCheckIn.ts
index e009f7351c2..c22425619d9 100644
--- a/packages/server/graphql/mutations/endCheckIn.ts
+++ b/packages/server/graphql/mutations/endCheckIn.ts
@@ -230,7 +230,7 @@ export default {
IntegrationNotifier.endMeeting(dataLoader, meetingId, teamId)
const updatedTaskIds = (result && result.updatedTaskIds) || []
- analytics.checkInEnd(completedCheckIn, meetingMembers, team, dataLoader)
+ analytics.checkInEnd(completedCheckIn, meetingMembers, dataLoader)
sendNewMeetingSummary(completedCheckIn, context).catch(Logger.log)
checkTeamsLimit(team.orgId, dataLoader)
diff --git a/packages/server/graphql/mutations/helpers/createTeamAndLeader.ts b/packages/server/graphql/mutations/helpers/createTeamAndLeader.ts
index 1daa2d8730e..2e972dd3e6f 100644
--- a/packages/server/graphql/mutations/helpers/createTeamAndLeader.ts
+++ b/packages/server/graphql/mutations/helpers/createTeamAndLeader.ts
@@ -16,10 +16,9 @@ interface ValidNewTeam {
name: string
orgId: string
isOnboardTeam: boolean
- isOneOnOneTeam?: boolean
}
-// used for addorg, addTeam, maybeCreateOneOnOneTeam
+// used for addorg, addTeam
export default async function createTeamAndLeader(user: IUser, newTeam: ValidNewTeam) {
const r = await getRethink()
const {id: userId} = user
diff --git a/packages/server/graphql/mutations/helpers/getExistingOneOnOneTeam.ts b/packages/server/graphql/mutations/helpers/getExistingOneOnOneTeam.ts
deleted file mode 100644
index 8eb4ad1b6b9..00000000000
--- a/packages/server/graphql/mutations/helpers/getExistingOneOnOneTeam.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import getRethink from '../../../database/rethinkDriver'
-import getKysely from '../../../postgres/getKysely'
-import {RValue} from '../../../database/stricterR'
-
-export const getExistingOneOnOneTeam = async (
- userId: string,
- secondUserId: string,
- orgId: string
-) => {
- const r = await getRethink()
- const pg = getKysely()
- const userIds = [userId, secondUserId]
- const existingTeamIds = await (
- r
- .table('TeamMember')
- // Select teams where both users exists
- .getAll(r.args(userIds), {index: 'userId'})
- .filter({isNotRemoved: true}) // Only consider users who are not removed
- .group('teamId') as RValue
- )
- .count()
- .ungroup()
- .filter(r.row('reduction').eq(userIds.length))
- .without('reduction')
- .getField('group')
- .coerceTo('array')
- .run()
-
- if (!existingTeamIds.length) {
- return null
- }
-
- const teams = await pg
- .selectFrom('Team')
- .selectAll()
- .where('id', 'in', existingTeamIds)
- .where('orgId', '=', orgId)
- .where('isOneOnOneTeam', '=', true)
- .where('isArchived', '=', false)
- .execute()
-
- return teams[0]
-}
diff --git a/packages/server/graphql/mutations/helpers/maybeCreateOneOnOneTeam.ts b/packages/server/graphql/mutations/helpers/maybeCreateOneOnOneTeam.ts
deleted file mode 100644
index 20e420e3d2b..00000000000
--- a/packages/server/graphql/mutations/helpers/maybeCreateOneOnOneTeam.ts
+++ /dev/null
@@ -1,98 +0,0 @@
-import {getUserByEmail} from '../../../postgres/queries/getUsersByEmails'
-import generateUID from '../../../generateUID'
-import createTeamAndLeader from './createTeamAndLeader'
-import IUser from '../../../postgres/types/IUser'
-import inviteToTeamHelper from './inviteToTeamHelper'
-import {GQLContext} from '../../graphql'
-import publish from '../../../utils/publish'
-import {SubscriptionChannel} from '~/types/constEnums'
-import toTeamMemberId from '~/utils/relay/toTeamMemberId'
-import {getExistingOneOnOneTeam} from './getExistingOneOnOneTeam'
-import getTeamsByOrgIds from '../../../postgres/queries/getTeamsByOrgIds'
-import {analytics} from '../../../utils/analytics/analytics'
-
-type OneOnOneTeam = {
- email: string
- orgId: string
-}
-
-const createNewTeamAndInvite = async (
- viewer: IUser,
- name: string,
- orgId: string,
- invitees: string[],
- context: GQLContext
-) => {
- const {authToken, socketId: mutatorId, dataLoader} = context
- const {id: viewerId} = viewer
- const operationId = dataLoader.share()
- const subOptions = {mutatorId, operationId}
- const teamId = generateUID()
- await createTeamAndLeader(viewer, {
- id: teamId,
- isOnboardTeam: false,
- isOneOnOneTeam: true,
- name,
- orgId
- })
-
- const orgTeams = await getTeamsByOrgIds([orgId], {isArchived: false})
-
- const {tms} = authToken
- // MUTATIVE
- tms.push(teamId)
- analytics.newTeam(viewer, orgId, teamId, orgTeams.length + 1, true)
- publish(SubscriptionChannel.NOTIFICATION, viewerId, 'AuthTokenPayload', {tms})
-
- const teamMemberId = toTeamMemberId(teamId, viewerId)
- const teamData = {
- orgId,
- teamId,
- teamMemberId
- }
- publish(SubscriptionChannel.TEAM, viewerId, 'AddTeamPayload', teamData, subOptions)
-
- await inviteToTeamHelper(invitees, teamId, undefined, context)
-
- return teamId
-}
-
-const generateOneOnOneTeamName = (
- firstUserName: string,
- secondUserEmail: string,
- secondUserName?: string
-) => {
- if (secondUserName) {
- return `${firstUserName} / ${secondUserName}`
- }
-
- return `${firstUserName} / ${secondUserEmail.split('@')[0]!}`
-}
-
-export default async function maybeCreateOneOnOneTeam(
- viewer: IUser,
- oneOnOneTeam: OneOnOneTeam,
- context: GQLContext
-) {
- const {email, orgId} = oneOnOneTeam
-
- const existingUser = await getUserByEmail(email)
-
- const teamName = generateOneOnOneTeamName(
- viewer.preferredName,
- email,
- existingUser?.preferredName
- )
-
- if (!existingUser) {
- return createNewTeamAndInvite(viewer, teamName, orgId, [email], context)
- }
-
- // If user exists, check if the team with that user already exists
- const existingTeam = await getExistingOneOnOneTeam(existingUser.id, viewer.id, orgId)
- if (existingTeam) {
- return existingTeam.id
- }
-
- return createNewTeamAndInvite(viewer, teamName, orgId, [existingUser.email], context)
-}
diff --git a/packages/server/graphql/mutations/joinMeeting.ts b/packages/server/graphql/mutations/joinMeeting.ts
index c82e1f25dd4..4454425cef3 100644
--- a/packages/server/graphql/mutations/joinMeeting.ts
+++ b/packages/server/graphql/mutations/joinMeeting.ts
@@ -164,8 +164,7 @@ const joinMeeting = {
const data = {meetingId}
publish(SubscriptionChannel.MEETING, meetingId, 'JoinMeetingSuccess', data, subOptions)
- const team = await dataLoader.get('teams').loadNonNull(teamId)
- analytics.meetingJoined(viewer, meeting, team)
+ analytics.meetingJoined(viewer, meeting)
return data
}
}
diff --git a/packages/server/graphql/private/typeDefs/updateOrgFeatureFlag.graphql b/packages/server/graphql/private/typeDefs/updateOrgFeatureFlag.graphql
index 925a360df83..9d7fad91919 100644
--- a/packages/server/graphql/private/typeDefs/updateOrgFeatureFlag.graphql
+++ b/packages/server/graphql/private/typeDefs/updateOrgFeatureFlag.graphql
@@ -10,7 +10,6 @@ enum OrganizationFeatureFlagsEnum {
shareSummary
teamsLimit
noTeamInsights
- oneOnOne
singleColumnStandups
publicTeams
kudos
diff --git a/packages/server/graphql/public/mutations/startCheckIn.ts b/packages/server/graphql/public/mutations/startCheckIn.ts
index b3997933509..9c5f10de62b 100644
--- a/packages/server/graphql/public/mutations/startCheckIn.ts
+++ b/packages/server/graphql/public/mutations/startCheckIn.ts
@@ -12,13 +12,12 @@ import standardError from '../../../utils/standardError'
import createGcalEvent from '../../mutations/helpers/createGcalEvent'
import createNewMeetingPhases from '../../mutations/helpers/createNewMeetingPhases'
import isStartMeetingLocked from '../../mutations/helpers/isStartMeetingLocked'
-import maybeCreateOneOnOneTeam from '../../mutations/helpers/maybeCreateOneOnOneTeam'
import {IntegrationNotifier} from '../../mutations/helpers/notifications/IntegrationNotifier'
import {MutationResolvers} from '../resolverTypes'
const startCheckIn: MutationResolvers['startCheckIn'] = async (
_source,
- {teamId: existingTeamId, gcalInput, oneOnOneTeamInput},
+ {teamId, gcalInput},
context
) => {
const r = await getRethink()
@@ -28,31 +27,13 @@ const startCheckIn: MutationResolvers['startCheckIn'] = async (
// AUTH
const viewerId = getUserId(authToken)
- if (existingTeamId && oneOnOneTeamInput) {
- return standardError(
- new Error('Please provide either "teamId" or "oneOnOneTeamInput", but not both'),
- {
- userId: viewerId
- }
- )
+ if (!isTeamMember(authToken, teamId)) {
+ return standardError(new Error('Team not found'), {userId: viewerId})
}
+ const unpaidError = await isStartMeetingLocked(teamId, dataLoader)
+ if (unpaidError) return standardError(new Error(unpaidError), {userId: viewerId})
- if (existingTeamId) {
- if (!isTeamMember(authToken, existingTeamId)) {
- return standardError(new Error('Team not found'), {userId: viewerId})
- }
- const unpaidError = await isStartMeetingLocked(existingTeamId, dataLoader)
- if (unpaidError) return standardError(new Error(unpaidError), {userId: viewerId})
- }
const viewer = await dataLoader.get('users').loadNonNull(viewerId)
- const teamId = oneOnOneTeamInput
- ? await maybeCreateOneOnOneTeam(viewer, oneOnOneTeamInput, context)
- : existingTeamId
- if (!teamId) {
- return standardError(new Error('Must provide teamId or oneOnOneTeamInput'), {
- userId: viewerId
- })
- }
const meetingType: MeetingTypeEnum = 'action'
@@ -79,7 +60,6 @@ const startCheckIn: MutationResolvers['startCheckIn'] = async (
id: meetingId,
teamId,
meetingCount,
- name: oneOnOneTeamInput ? `One on One #${meetingCount + 1}` : undefined,
phases,
facilitatorUserId: viewerId
})
@@ -111,8 +91,7 @@ const startCheckIn: MutationResolvers['startCheckIn'] = async (
r.table('AgendaItem').getAll(r.args(agendaItemIds)).update({meetingId}).run()
])
IntegrationNotifier.startMeeting(dataLoader, meetingId, teamId)
- const team = await dataLoader.get('teams').loadNonNull(teamId)
- analytics.meetingStarted(viewer, meeting, undefined, team)
+ analytics.meetingStarted(viewer, meeting)
const {error} = await createGcalEvent({gcalInput, teamId, meetingId, viewerId, dataLoader})
const data = {teamId, meetingId, hasGcalError: !!error?.message}
publish(SubscriptionChannel.TEAM, teamId, 'StartCheckInSuccess', data, subOptions)
diff --git a/packages/server/graphql/public/typeDefs/CreateOneOnOneTeamInput.graphql b/packages/server/graphql/public/typeDefs/CreateOneOnOneTeamInput.graphql
deleted file mode 100644
index 36189d3aa47..00000000000
--- a/packages/server/graphql/public/typeDefs/CreateOneOnOneTeamInput.graphql
+++ /dev/null
@@ -1,4 +0,0 @@
-input CreateOneOnOneTeamInput {
- email: Email!
- orgId: String!
-}
diff --git a/packages/server/graphql/public/typeDefs/Organization.graphql b/packages/server/graphql/public/typeDefs/Organization.graphql
index 40fe0800f8a..b7471c75dcf 100644
--- a/packages/server/graphql/public/typeDefs/Organization.graphql
+++ b/packages/server/graphql/public/typeDefs/Organization.graphql
@@ -141,11 +141,6 @@ type Organization {
"""
orgUserCount: OrgUserCount!
- """
- Returns one on one team if exists
- """
- oneOnOneTeam(email: Email!): Team
-
"""
The leaders of the org
"""
@@ -190,7 +185,6 @@ type OrganizationFeatureFlags {
shareSummary: Boolean!
teamsLimit: Boolean!
noTeamInsights: Boolean!
- oneOnOne: Boolean!
singleColumnStandups: Boolean!
publicTeams: Boolean!
kudos: Boolean!
diff --git a/packages/server/graphql/public/typeDefs/startCheckIn.graphql b/packages/server/graphql/public/typeDefs/startCheckIn.graphql
index 8fde46f9b80..35a8c0f4b69 100644
--- a/packages/server/graphql/public/typeDefs/startCheckIn.graphql
+++ b/packages/server/graphql/public/typeDefs/startCheckIn.graphql
@@ -18,14 +18,10 @@ extend type Mutation {
"""
The team starting the meeting
"""
- teamId: ID
+ teamId: ID!
"""
The gcal input if creating a gcal event
"""
gcalInput: CreateGcalEventInput
- """
- One-on-one ad-hoc team input
- """
- oneOnOneTeamInput: CreateOneOnOneTeamInput
): StartCheckInPayload!
}
diff --git a/packages/server/graphql/public/types/CreateOneOnOneTeamInput.ts b/packages/server/graphql/public/types/CreateOneOnOneTeamInput.ts
deleted file mode 100644
index fe4af051167..00000000000
--- a/packages/server/graphql/public/types/CreateOneOnOneTeamInput.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import {GraphQLInputObjectType, GraphQLNonNull, GraphQLString} from 'graphql'
-import GraphQLEmailType from '../../types/GraphQLEmailType'
-
-const CreateOneOnOneTeamInput = new GraphQLInputObjectType({
- name: 'CreateOneOnOneTeamInput',
- fields: () => ({
- email: {
- type: new GraphQLNonNull(GraphQLEmailType)
- },
- orgId: {
- type: new GraphQLNonNull(GraphQLString)
- }
- })
-})
-
-export type CreateOneOnOneTeamInputType = {
- email: string
- orgId: string
-}
-
-export default CreateOneOnOneTeamInput
diff --git a/packages/server/graphql/public/types/Organization.ts b/packages/server/graphql/public/types/Organization.ts
index 617cc39d5ec..b1164b14f7e 100644
--- a/packages/server/graphql/public/types/Organization.ts
+++ b/packages/server/graphql/public/types/Organization.ts
@@ -1,10 +1,5 @@
-import {getUserId, isSuperUser} from '../../../utils/authorization'
+import {isSuperUser} from '../../../utils/authorization'
import {OrganizationResolvers} from '../resolverTypes'
-import {GQLContext} from '../../graphql'
-import {getUserByEmail} from '../../../postgres/queries/getUsersByEmails'
-import {getExistingOneOnOneTeam} from '../../mutations/helpers/getExistingOneOnOneTeam'
-import {mapToTeam} from '../../../postgres/queries/getTeamsByIds'
-import {IGetTeamsByIdsQueryResult} from '../../../postgres/queries/generated/getTeamsByIdsQuery'
import {getFeatureTier} from '../../types/helpers/getFeatureTier'
const Organization: OrganizationResolvers = {
@@ -29,32 +24,6 @@ const Organization: OrganizationResolvers = {
return getFeatureTier({tier, trialStartDate})
},
billingTier: ({tier}) => tier,
- oneOnOneTeam: async (
- {id: orgId}: {id: string},
- {email}: {email: string},
- context: GQLContext
- ) => {
- const {authToken} = context
- const viewerId = getUserId(authToken)
-
- const existingUser = await getUserByEmail(email)
-
- if (!existingUser) {
- return null
- }
-
- // TODO: refactor mapToTeam to use kysely and remove IGetTeamsByIdsQueryResult
- const existingTeam = (await getExistingOneOnOneTeam(
- existingUser.id,
- viewerId,
- orgId
- )) as IGetTeamsByIdsQueryResult
- if (existingTeam) {
- return mapToTeam([existingTeam])[0] ?? null
- }
-
- return null
- },
saml: async ({id: orgId}, _args, {dataLoader}) => {
const saml = await dataLoader.get('samlByOrgId').load(orgId)
return saml || null
diff --git a/packages/server/graphql/public/types/OrganizationFeatureFlags.ts b/packages/server/graphql/public/types/OrganizationFeatureFlags.ts
index 9903dc8dd4e..8a0a0cec364 100644
--- a/packages/server/graphql/public/types/OrganizationFeatureFlags.ts
+++ b/packages/server/graphql/public/types/OrganizationFeatureFlags.ts
@@ -9,7 +9,6 @@ const OrganizationFeatureFlags: OrganizationFeatureFlagsResolvers = {
suggestGroups: ({suggestGroups}) => !!suggestGroups,
teamsLimit: ({teamsLimit}) => !!teamsLimit,
noTeamInsights: ({noTeamInsights}) => !!noTeamInsights,
- oneOnOne: ({oneOnOne}) => !!oneOnOne,
publicTeams: ({publicTeams}) => !!publicTeams,
singleColumnStandups: ({singleColumnStandups}) => !!singleColumnStandups,
kudos: ({kudos}) => !!kudos,
diff --git a/packages/server/postgres/migrations/1712073121060_removeOneOnOne.ts b/packages/server/postgres/migrations/1712073121060_removeOneOnOne.ts
new file mode 100644
index 00000000000..c145dc0c8f6
--- /dev/null
+++ b/packages/server/postgres/migrations/1712073121060_removeOneOnOne.ts
@@ -0,0 +1,16 @@
+import {Client} from 'pg'
+import getPgConfig from '../getPgConfig'
+
+export async function up() {
+ const client = new Client(getPgConfig())
+ await client.connect()
+ await client.query(`UPDATE "MeetingTemplate" SET "isActive" = false WHERE id = 'oneOnOneAction';`)
+ await client.end()
+}
+
+export async function down() {
+ const client = new Client(getPgConfig())
+ await client.connect()
+ await client.query(`UPDATE "MeetingTemplate" SET "isActive" = true WHERE id = 'oneOnOneAction';`)
+ await client.end()
+}
diff --git a/packages/server/postgres/queries/src/insertTeamQuery.sql b/packages/server/postgres/queries/src/insertTeamQuery.sql
index 6401f533646..e2caacf620c 100644
--- a/packages/server/postgres/queries/src/insertTeamQuery.sql
+++ b/packages/server/postgres/queries/src/insertTeamQuery.sql
@@ -13,7 +13,6 @@ INSERT INTO "Team" (
"tier",
"orgId",
"isOnboardTeam",
- "isOneOnOneTeam",
"updatedAt"
) VALUES (
:id,
@@ -27,6 +26,5 @@ INSERT INTO "Team" (
:tier,
:orgId,
:isOnboardTeam,
- :isOneOnOneTeam,
:updatedAt
);
diff --git a/packages/server/utils/analytics/analytics.ts b/packages/server/utils/analytics/analytics.ts
index 305839e2651..df6d07c69ce 100644
--- a/packages/server/utils/analytics/analytics.ts
+++ b/packages/server/utils/analytics/analytics.ts
@@ -14,7 +14,6 @@ import {ModifyType} from '../../graphql/public/resolverTypes'
import {IntegrationProviderServiceEnumType} from '../../graphql/types/IntegrationProviderServiceEnum'
import {UpgradeCTALocationEnumType} from '../../graphql/types/UpgradeCTALocationEnum'
import {TeamPromptResponse} from '../../postgres/queries/getTeamPromptResponsesByIds'
-import {Team} from '../../postgres/queries/getTeamsByIds'
import {MeetingTypeEnum} from '../../postgres/types/Meeting'
import {MeetingSeries} from '../../postgres/types/MeetingSeries'
import {AmplitudeAnalytics} from './amplitude/AmplitudeAnalytics'
@@ -228,7 +227,6 @@ class Analytics {
checkInEnd = async (
completedMeeting: Meeting,
meetingMembers: MeetingMember[],
- team: Team,
dataLoader: DataLoaderWorker
) =>
Promise.all(
@@ -239,8 +237,7 @@ class Analytics {
completedMeeting,
meetingMembers,
undefined,
- undefined,
- team
+ undefined
)
)
)
@@ -293,24 +290,18 @@ class Analytics {
completedMeeting: Meeting,
meetingMembers: MeetingMember[],
template?: MeetingTemplate,
- meetingSpecificProperties?: any,
- team?: Team
+ meetingSpecificProperties?: any
) => {
const user = await dataloader.get('users').load(userId)
this.track({id: userId, email: user?.email}, 'Meeting Completed', {
wasFacilitator: completedMeeting.facilitatorUserId === userId,
- ...createMeetingProperties(completedMeeting, meetingMembers, template, team),
+ ...createMeetingProperties(completedMeeting, meetingMembers, template),
...meetingSpecificProperties
})
}
- meetingStarted = (
- user: AnalyticsUser,
- meeting: Meeting,
- template?: MeetingTemplate,
- team?: Team
- ) => {
- this.track(user, 'Meeting Started', createMeetingProperties(meeting, undefined, template, team))
+ meetingStarted = (user: AnalyticsUser, meeting: Meeting, template?: MeetingTemplate) => {
+ this.track(user, 'Meeting Started', createMeetingProperties(meeting, undefined, template))
}
recurrenceStarted = (user: AnalyticsUser, meetingSeries: MeetingSeriesAnalyticsProperties) => {
@@ -321,8 +312,8 @@ class Analytics {
this.track(user, 'Meeting Recurrence Stopped', meetingSeries)
}
- meetingJoined = (user: AnalyticsUser, meeting: Meeting, team: Team) => {
- this.track(user, 'Meeting Joined', createMeetingProperties(meeting, undefined, undefined, team))
+ meetingJoined = (user: AnalyticsUser, meeting: Meeting) => {
+ this.track(user, 'Meeting Joined', createMeetingProperties(meeting, undefined, undefined))
}
meetingSettingsChanged = (
@@ -670,14 +661,8 @@ class Analytics {
this.track(user, 'New Org', {orgId, teamId, fromSignup})
}
- newTeam = (
- user: AnalyticsUser,
- orgId: string,
- teamId: string,
- teamNumber: number,
- isOneOnOneTeam = false
- ) => {
- this.track(user, 'New Team', {orgId, teamId, teamNumber, isOneOnOneTeam})
+ newTeam = (user: AnalyticsUser, orgId: string, teamId: string, teamNumber: number) => {
+ this.track(user, 'New Team', {orgId, teamId, teamNumber})
}
pollAdded = (user: AnalyticsUser, teamId: string, meetingId: string) => {
diff --git a/packages/server/utils/analytics/helpers.ts b/packages/server/utils/analytics/helpers.ts
index 9dfcaece2cf..fb3b90cddeb 100644
--- a/packages/server/utils/analytics/helpers.ts
+++ b/packages/server/utils/analytics/helpers.ts
@@ -1,6 +1,5 @@
import {CHECKIN} from '../../../client/utils/constants'
import Meeting from '../../database/types/Meeting'
-import {Team} from '../../postgres/queries/getTeamsByIds'
import MeetingMember from '../../database/types/MeetingMember'
import MeetingRetrospective from '../../database/types/MeetingRetrospective'
import MeetingTemplate from '../../database/types/MeetingTemplate'
@@ -8,8 +7,7 @@ import MeetingTemplate from '../../database/types/MeetingTemplate'
export const createMeetingProperties = (
meeting: Meeting,
meetingMembers?: MeetingMember[],
- template?: MeetingTemplate,
- team?: Team
+ template?: MeetingTemplate
) => {
const {id: meetingId, teamId, facilitatorUserId, meetingType, phases} = meeting
const hasIcebreaker = phases.some(({phaseType}) => phaseType === CHECKIN)
@@ -32,7 +30,6 @@ export const createMeetingProperties = (
disableAnonymity:
meetingType === 'retrospective'
? (meeting as MeetingRetrospective).disableAnonymity ?? false
- : undefined,
- isOneOnOneTeam: team?.isOneOnOneTeam
+ : undefined
}
}
diff --git a/static/images/illustrations/meeting_types-one_on_one.svg b/static/images/illustrations/meeting_types-one_on_one.svg
deleted file mode 100644
index 6a6e21b4eec..00000000000
--- a/static/images/illustrations/meeting_types-one_on_one.svg
+++ /dev/null
@@ -1,28 +0,0 @@
-
diff --git a/static/images/illustrations/oneOnOne.svg b/static/images/illustrations/oneOnOne.svg
deleted file mode 100644
index c996500e76f..00000000000
--- a/static/images/illustrations/oneOnOne.svg
+++ /dev/null
@@ -1,33 +0,0 @@
-