Bläddra i källkod

[web] Migrate `/subscription/invites` to BS5 (#20652)

* [web] Wiring work for `/subscription/invites` BS5 migration

* [web] Migrate group-invites.tsx to BS5

* [web] Migrate group-invites-item.tsx to BS5

GitOrigin-RevId: a12aafce3ad0040dc500f5f29b1a20fbae4a748e
Antoine Clausse 2 år sedan
förälder
incheckning
246157cf63

+ 7 - 0
services/web/app/src/Features/Subscription/TeamInvitesController.js

@@ -14,6 +14,7 @@ const EmailHandler = require('../Email/EmailHandler')
 const { RateLimiter } = require('../../infrastructure/RateLimiter')
 const { RateLimiter } = require('../../infrastructure/RateLimiter')
 const Modules = require('../../infrastructure/Modules')
 const Modules = require('../../infrastructure/Modules')
 const UserAuditLogHandler = require('../User/UserAuditLogHandler')
 const UserAuditLogHandler = require('../User/UserAuditLogHandler')
+const SplitTestHandler = require('../SplitTests/SplitTestHandler')
 
 
 const rateLimiters = {
 const rateLimiters = {
   resendGroupInvite: new RateLimiter('resend-group-invite', {
   resendGroupInvite: new RateLimiter('resend-group-invite', {
@@ -181,6 +182,12 @@ async function viewInvites(req, res, next) {
     groupSubscription.teamInvites.find(invite => invite.email === userEmail)
     groupSubscription.teamInvites.find(invite => invite.email === userEmail)
   )
   )
 
 
+  await SplitTestHandler.promises.getAssignment(
+    req,
+    res,
+    'bootstrap-5-subscription'
+  )
+
   return res.render('subscriptions/team/group-invites', {
   return res.render('subscriptions/team/group-invites', {
     teamInvites,
     teamInvites,
   })
   })

+ 4 - 0
services/web/app/views/subscriptions/team/group-invites.pug

@@ -1,5 +1,9 @@
 extends ../../layout-marketing
 extends ../../layout-marketing
 
 
+block vars
+	- bootstrap5PageStatus = 'enabled' // One of 'disabled', 'enabled', and 'queryStringOnly'
+	- bootstrap5PageSplitTest = 'bootstrap-5-subscription'
+
 block entrypointVar
 block entrypointVar
 	- entrypoint = 'pages/user/subscription/group-invites'
 	- entrypoint = 'pages/user/subscription/group-invites'
 
 

+ 9 - 7
services/web/frontend/js/features/subscription/components/group-invites/group-invites-item.tsx

@@ -1,7 +1,9 @@
-import { Col, Row } from 'react-bootstrap'
 import { Trans } from 'react-i18next'
 import { Trans } from 'react-i18next'
 import GroupInvitesItemFooter from './group-invites-item-footer'
 import GroupInvitesItemFooter from './group-invites-item-footer'
 import type { TeamInvite } from '../../../../../../types/team-invite'
 import type { TeamInvite } from '../../../../../../types/team-invite'
+import OLCard from '@/features/ui/components/ol/ol-card'
+import OLRow from '@/features/ui/components/ol/ol-row'
+import OLCol from '@/features/ui/components/ol/ol-col'
 
 
 type GroupInvitesItemProps = {
 type GroupInvitesItemProps = {
   teamInvite: TeamInvite
   teamInvite: TeamInvite
@@ -11,9 +13,9 @@ export default function GroupInvitesItem({
   teamInvite,
   teamInvite,
 }: GroupInvitesItemProps) {
 }: GroupInvitesItemProps) {
   return (
   return (
-    <Row className="row-spaced">
-      <Col md={8} mdOffset={2} className="text-center">
-        <div className="card">
+    <OLRow className="row-spaced">
+      <OLCol lg={{ span: 8, offset: 2 }} className="text-center">
+        <OLCard>
           <div className="page-header">
           <div className="page-header">
             <h2>
             <h2>
               <Trans
               <Trans
@@ -29,8 +31,8 @@ export default function GroupInvitesItem({
             </h2>
             </h2>
           </div>
           </div>
           <GroupInvitesItemFooter teamInvite={teamInvite} />
           <GroupInvitesItemFooter teamInvite={teamInvite} />
-        </div>
-      </Col>
-    </Row>
+        </OLCard>
+      </OLCol>
+    </OLRow>
   )
   )
 }
 }

+ 6 - 5
services/web/frontend/js/features/subscription/components/group-invites/group-invites.tsx

@@ -1,9 +1,10 @@
 import { useEffect } from 'react'
 import { useEffect } from 'react'
-import { Col, Row } from 'react-bootstrap'
 import { useTranslation } from 'react-i18next'
 import { useTranslation } from 'react-i18next'
 import getMeta from '@/utils/meta'
 import getMeta from '@/utils/meta'
 import { useLocation } from '@/shared/hooks/use-location'
 import { useLocation } from '@/shared/hooks/use-location'
 import GroupInvitesItem from './group-invites-item'
 import GroupInvitesItem from './group-invites-item'
+import OLRow from '@/features/ui/components/ol/ol-row'
+import OLCol from '@/features/ui/components/ol/ol-col'
 
 
 function GroupInvites() {
 function GroupInvites() {
   const { t } = useTranslation()
   const { t } = useTranslation()
@@ -18,11 +19,11 @@ function GroupInvites() {
 
 
   return (
   return (
     <div className="container">
     <div className="container">
-      <Row>
-        <Col md={8} mdOffset={2}>
+      <OLRow>
+        <OLCol lg={{ span: 8, offset: 2 }}>
           <h1>{t('group_invitations')}</h1>
           <h1>{t('group_invitations')}</h1>
-        </Col>
-      </Row>
+        </OLCol>
+      </OLRow>
       {teamInvites.map(teamInvite => (
       {teamInvites.map(teamInvite => (
         <GroupInvitesItem teamInvite={teamInvite} key={teamInvite._id} />
         <GroupInvitesItem teamInvite={teamInvite} key={teamInvite._id} />
       ))}
       ))}