Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
c199e00
Unlock payment route and functionality, no op cassandra impl yet
battermann Nov 9, 2021
a87fe0c
removed payment status for app lock team feature from C* schema, and …
battermann Nov 18, 2021
9a09469
This is a delta for #1916 (#1935)
fisx Nov 18, 2021
9982454
improve comment
Nov 18, 2021
0a51b92
simplification
battermann Nov 18, 2021
f0f50cc
require HasPaymentStatusCol for setting the payment status
battermann Nov 18, 2021
c1a1307
clean up
battermann Nov 18, 2021
17d6c54
FeatureStatus with and without PaymentStatus
battermann Nov 18, 2021
9d419ba
integration tests + implementation of business logic
battermann Nov 22, 2021
d235a3f
reduce # of db roundtrips
battermann Nov 23, 2021
80b9b8c
renamed migration
battermann Nov 23, 2021
f1824ef
Merge branch 'develop' into SQSERVICES-960-distinguish-between-unlock…
fisx Nov 23, 2021
95fc91a
Simplify.
fisx Nov 23, 2021
187da92
Factor out feature locking function.
fisx Nov 23, 2021
1a2b7dc
FeatureHasNoConfig with PaymentStatus parameter
battermann Nov 24, 2021
dc9c717
Merge branch 'SQSERVICES-960-distinguish-between-unlock-team-feature-…
battermann Nov 24, 2021
d37484a
remove comment
Nov 24, 2021
f3d8cdd
additional roundtrip test
Nov 24, 2021
f1f35f6
typo
Nov 24, 2021
d401dda
clean up
Nov 24, 2021
b268c10
more explicit pattern match
battermann Nov 24, 2021
743da2f
simplify payment status to payment status value
battermann Nov 24, 2021
151f712
typo
Nov 24, 2021
fe9fce9
changelog
battermann Nov 24, 2021
1f0c701
update schema docs
battermann Nov 24, 2021
4823614
Merge branch 'SQSERVICES-960-distinguish-between-unlock-team-feature-…
battermann Nov 24, 2021
43b1be0
typo
battermann Nov 24, 2021
5dfa900
schema for conference calling payment status
battermann Nov 23, 2021
7d50aa8
wip
battermann Nov 24, 2021
0ce4626
FeatureHasNoConfig depends on PaymentStatus WIP
battermann Nov 24, 2021
850fc9c
wip
battermann Nov 25, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
get team feature config for self deleting messages response includes payment status
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
new internal endpoints for setting the payment status of self deleting messages
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
payment status for the self deleting messages feature can be set internally by ibis and customer support
1 change: 1 addition & 0 deletions docs/reference/cassandra-schema.cql
Original file line number Diff line number Diff line change
Expand Up @@ -422,6 +422,7 @@ CREATE TABLE galley_test.team_features (
file_sharing int,
legalhold_status int,
search_visibility_status int,
self_deleting_messages_payment_status int,
self_deleting_messages_status int,
self_deleting_messages_ttl int,
sso_status int,
Expand Down
12 changes: 6 additions & 6 deletions libs/galley-types/src/Galley/Types/Teams.hs
Original file line number Diff line number Diff line change
Expand Up @@ -212,11 +212,11 @@ data FeatureFlags = FeatureFlags
{ _flagSSO :: !FeatureSSO,
_flagLegalHold :: !FeatureLegalHold,
_flagTeamSearchVisibility :: !FeatureTeamSearchVisibility,
_flagAppLockDefaults :: !(Defaults (TeamFeatureStatus 'TeamFeatureAppLock)),
_flagClassifiedDomains :: !(TeamFeatureStatus 'TeamFeatureClassifiedDomains),
_flagFileSharing :: !(Defaults (TeamFeatureStatus 'TeamFeatureFileSharing)),
_flagConferenceCalling :: !(Defaults (TeamFeatureStatus 'TeamFeatureConferenceCalling)),
_flagSelfDeletingMessages :: !(Defaults (TeamFeatureStatus 'TeamFeatureSelfDeletingMessages))
_flagAppLockDefaults :: !(Defaults (TeamFeatureStatus 'WithoutPaymentStatus 'TeamFeatureAppLock)),
_flagClassifiedDomains :: !(TeamFeatureStatus 'WithoutPaymentStatus 'TeamFeatureClassifiedDomains),
_flagFileSharing :: !(Defaults (TeamFeatureStatus 'WithoutPaymentStatus 'TeamFeatureFileSharing)),
_flagConferenceCalling :: !(Defaults (TeamFeatureStatus 'WithPaymentStatus 'TeamFeatureConferenceCalling)),
_flagSelfDeletingMessages :: !(Defaults (TeamFeatureStatus 'WithPaymentStatus 'TeamFeatureSelfDeletingMessages))
}
deriving (Eq, Show, Generic)

Expand Down Expand Up @@ -261,7 +261,7 @@ instance FromJSON FeatureFlags where
<*> (fromMaybe (Defaults defaultAppLockStatus) <$> (obj .:? "appLock"))
<*> (fromMaybe defaultClassifiedDomains <$> (obj .:? "classifiedDomains"))
<*> (fromMaybe (Defaults (TeamFeatureStatusNoConfig TeamFeatureEnabled)) <$> (obj .:? "fileSharing"))
<*> (fromMaybe (Defaults (TeamFeatureStatusNoConfig TeamFeatureEnabled)) <$> (obj .:? "conferenceCalling"))
<*> (fromMaybe (Defaults defaultConferenceCalling) <$> (obj .:? "conferenceCalling"))
<*> (fromMaybe (Defaults defaultSelfDeletingMessagesStatus) <$> (obj .:? "selfDeletingMessages"))

instance ToJSON FeatureFlags where
Expand Down
4 changes: 2 additions & 2 deletions libs/wire-api/src/Wire/API/Routes/Internal/Brig.hs
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ type GetAccountFeatureConfig =
:> Capture "uid" UserId
:> "features"
:> "conferenceCalling"
:> Get '[Servant.JSON] (ApiFt.TeamFeatureStatus 'ApiFt.TeamFeatureConferenceCalling)
:> Get '[Servant.JSON] (ApiFt.TeamFeatureStatus 'ApiFt.WithoutPaymentStatus 'ApiFt.TeamFeatureConferenceCalling)

type PutAccountFeatureConfig =
Summary
Expand All @@ -75,7 +75,7 @@ type PutAccountFeatureConfig =
:> Capture "uid" UserId
:> "features"
:> "conferenceCalling"
:> Servant.ReqBody '[Servant.JSON] (ApiFt.TeamFeatureStatus 'ApiFt.TeamFeatureConferenceCalling)
:> Servant.ReqBody '[Servant.JSON] (ApiFt.TeamFeatureStatus 'ApiFt.WithoutPaymentStatus 'ApiFt.TeamFeatureConferenceCalling)
:> Put '[Servant.JSON] NoContent

type DeleteAccountFeatureConfig =
Expand Down
44 changes: 22 additions & 22 deletions libs/wire-api/src/Wire/API/Routes/Public/Galley.hs
Original file line number Diff line number Diff line change
Expand Up @@ -623,7 +623,7 @@ data Api routes = Api
:- FeatureStatusPut 'TeamFeatureSearchVisibility,
teamFeatureStatusSearchVisibilityDeprecatedGet ::
routes
:- FeatureStatusDeprecatedGet 'TeamFeatureSearchVisibility,
:- FeatureStatusDeprecatedGet 'WithoutPaymentStatus 'TeamFeatureSearchVisibility,
teamFeatureStatusSearchVisibilityDeprecatedPut ::
routes
:- FeatureStatusDeprecatedPut 'TeamFeatureSearchVisibility,
Expand All @@ -632,13 +632,13 @@ data Api routes = Api
:- FeatureStatusGet 'TeamFeatureValidateSAMLEmails,
teamFeatureStatusValidateSAMLEmailsDeprecatedGet ::
routes
:- FeatureStatusDeprecatedGet 'TeamFeatureValidateSAMLEmails,
:- FeatureStatusDeprecatedGet 'WithoutPaymentStatus 'TeamFeatureValidateSAMLEmails,
teamFeatureStatusDigitalSignaturesGet ::
routes
:- FeatureStatusGet 'TeamFeatureDigitalSignatures,
teamFeatureStatusDigitalSignaturesDeprecatedGet ::
routes
:- FeatureStatusDeprecatedGet 'TeamFeatureDigitalSignatures,
:- FeatureStatusDeprecatedGet 'WithoutPaymentStatus 'TeamFeatureDigitalSignatures,
teamFeatureStatusAppLockGet ::
routes
:- FeatureStatusGet 'TeamFeatureAppLock,
Expand Down Expand Up @@ -668,34 +668,34 @@ data Api routes = Api
:- AllFeatureConfigsGet,
featureConfigLegalHoldGet ::
routes
:- FeatureConfigGet 'TeamFeatureLegalHold,
:- FeatureConfigGet 'WithoutPaymentStatus 'TeamFeatureLegalHold,
featureConfigSSOGet ::
routes
:- FeatureConfigGet 'TeamFeatureSSO,
:- FeatureConfigGet 'WithoutPaymentStatus 'TeamFeatureSSO,
featureConfigSearchVisibilityGet ::
routes
:- FeatureConfigGet 'TeamFeatureSearchVisibility,
:- FeatureConfigGet 'WithoutPaymentStatus 'TeamFeatureSearchVisibility,
featureConfigValidateSAMLEmailsGet ::
routes
:- FeatureConfigGet 'TeamFeatureValidateSAMLEmails,
:- FeatureConfigGet 'WithoutPaymentStatus 'TeamFeatureValidateSAMLEmails,
featureConfigDigitalSignaturesGet ::
routes
:- FeatureConfigGet 'TeamFeatureDigitalSignatures,
:- FeatureConfigGet 'WithoutPaymentStatus 'TeamFeatureDigitalSignatures,
featureConfigAppLockGet ::
routes
:- FeatureConfigGet 'TeamFeatureAppLock,
:- FeatureConfigGet 'WithoutPaymentStatus 'TeamFeatureAppLock,
featureConfigFileSharingGet ::
routes
:- FeatureConfigGet 'TeamFeatureFileSharing,
:- FeatureConfigGet 'WithoutPaymentStatus 'TeamFeatureFileSharing,
featureConfigClassifiedDomainsGet ::
routes
:- FeatureConfigGet 'TeamFeatureClassifiedDomains,
:- FeatureConfigGet 'WithoutPaymentStatus 'TeamFeatureClassifiedDomains,
featureConfigConferenceCallingGet ::
routes
:- FeatureConfigGet 'TeamFeatureConferenceCalling,
:- FeatureConfigGet 'WithPaymentStatus 'TeamFeatureConferenceCalling,
featureConfigSelfDeletingMessagesGet ::
routes
:- FeatureConfigGet 'TeamFeatureSelfDeletingMessages
:- FeatureConfigGet 'WithPaymentStatus 'TeamFeatureSelfDeletingMessages
}
deriving (Generic)

Expand All @@ -708,7 +708,7 @@ type FeatureStatusGet featureName =
:> Capture "tid" TeamId
:> "features"
:> KnownTeamFeatureNameSymbol featureName
:> Get '[Servant.JSON] (TeamFeatureStatus featureName)
:> Get '[Servant.JSON] (TeamFeatureStatus 'WithPaymentStatus featureName)

type FeatureStatusPut featureName =
Summary (AppendSymbol "Put config for " (KnownTeamFeatureNameSymbol featureName))
Expand All @@ -717,18 +717,18 @@ type FeatureStatusPut featureName =
:> Capture "tid" TeamId
:> "features"
:> KnownTeamFeatureNameSymbol featureName
:> ReqBody '[Servant.JSON] (TeamFeatureStatus featureName)
:> Put '[Servant.JSON] (TeamFeatureStatus featureName)
:> ReqBody '[Servant.JSON] (TeamFeatureStatus 'WithoutPaymentStatus featureName)
:> Put '[Servant.JSON] (TeamFeatureStatus 'WithoutPaymentStatus featureName)

-- | A type for a GET endpoint for a feature with a deprecated path
type FeatureStatusDeprecatedGet featureName =
type FeatureStatusDeprecatedGet ps featureName =
Summary (AppendSymbol "[deprecated] Get config for " (KnownTeamFeatureNameSymbol featureName))
:> ZUser
:> "teams"
:> Capture "tid" TeamId
:> "features"
:> DeprecatedFeatureName featureName
:> Get '[Servant.JSON] (TeamFeatureStatus featureName)
:> Get '[Servant.JSON] (TeamFeatureStatus ps featureName)

-- | A type for a PUT endpoint for a feature with a deprecated path
type FeatureStatusDeprecatedPut featureName =
Expand All @@ -738,15 +738,15 @@ type FeatureStatusDeprecatedPut featureName =
:> Capture "tid" TeamId
:> "features"
:> DeprecatedFeatureName featureName
:> ReqBody '[Servant.JSON] (TeamFeatureStatus featureName)
:> Put '[Servant.JSON] (TeamFeatureStatus featureName)
:> ReqBody '[Servant.JSON] (TeamFeatureStatus 'WithoutPaymentStatus featureName)
:> Put '[Servant.JSON] (TeamFeatureStatus 'WithoutPaymentStatus featureName)

type FeatureConfigGet featureName =
type FeatureConfigGet ps featureName =
Summary (AppendSymbol "Get feature config for feature " (KnownTeamFeatureNameSymbol featureName))
:> ZUser
:> "feature-configs"
:> KnownTeamFeatureNameSymbol featureName
:> Get '[Servant.JSON] (TeamFeatureStatus featureName)
:> Get '[Servant.JSON] (TeamFeatureStatus ps featureName)

type AllFeatureConfigsGet =
Summary "Get configurations of all features"
Expand Down
4 changes: 2 additions & 2 deletions libs/wire-api/src/Wire/API/Routes/Public/LegalHold.hs
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,9 @@ type PublicAPI =

type InternalAPI =
"i" :> "teams" :> Capture "tid" TeamId :> "legalhold"
:> Get '[JSON] (TeamFeatureStatus 'TeamFeatureLegalHold)
:> Get '[JSON] (TeamFeatureStatus 'WithPaymentStatus 'TeamFeatureLegalHold)
:<|> "i" :> "teams" :> Capture "tid" TeamId :> "legalhold"
:> ReqBody '[JSON] (TeamFeatureStatus 'TeamFeatureLegalHold)
:> ReqBody '[JSON] (TeamFeatureStatus 'WithoutPaymentStatus 'TeamFeatureLegalHold)
:> Put '[] NoContent

swaggerDoc :: Swagger
Expand Down
1 change: 1 addition & 0 deletions libs/wire-api/src/Wire/API/Swagger.hs
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ models =
Team.Feature.modelTeamFeatureAppLockConfig,
Team.Feature.modelTeamFeatureClassifiedDomainsConfig,
Team.Feature.modelTeamFeatureSelfDeletingMessagesConfig,
Team.Feature.modelPaymentStatus,
Team.Invitation.modelTeamInvitation,
Team.Invitation.modelTeamInvitationList,
Team.Invitation.modelTeamInvitationRequest,
Expand Down
Loading