Promote knocking to labs

This commit is contained in:
Stefan Ceriu
2026-09-02 11:28:36 +03:00
parent 6839258111
commit 2ae8b9bf75
7 changed files with 21 additions and 6 deletions
@@ -952,6 +952,8 @@
"screen_knock_requests_list_title" = "Requests to join";
"screen_labs_enable_gallery" = "Gallery messages";
"screen_labs_enable_gallery_description" = "Send multiple images or videos in one go. Stable on mobile, but not yet supported by web.";
"screen_labs_enable_knocking" = "Ask to join";
"screen_labs_enable_knocking_description" = "Users can request access to a room that is not open for anyone to join. Stable on mobile, web implementation exists but is experimental.";
"screen_labs_enable_threads" = "Enable thread replies";
"screen_labs_enable_threads_description" = "The app will restart to apply this change.";
"screen_labs_header_description" = "Try out our latest ideas in development. These features are not finalized; they may be unstable, may change.";
@@ -952,6 +952,8 @@
"screen_knock_requests_list_title" = "Requests to join";
"screen_labs_enable_gallery" = "Gallery messages";
"screen_labs_enable_gallery_description" = "Send multiple images or videos in one go. Stable on mobile, but not yet supported by web.";
"screen_labs_enable_knocking" = "Ask to join";
"screen_labs_enable_knocking_description" = "Users can request access to a room that is not open for anyone to join. Stable on mobile, web implementation exists but is experimental.";
"screen_labs_enable_threads" = "Enable thread replies";
"screen_labs_enable_threads_description" = "The app will restart to apply this change.";
"screen_labs_header_description" = "Try out our latest ideas in development. These features are not finalised; they may be unstable, may change.";
+4
View File
@@ -2228,6 +2228,10 @@ internal nonisolated enum L10n {
internal static var screenLabsEnableGallery: String { return L10n.tr("Localizable", "screen_labs_enable_gallery") }
/// Send multiple images or videos in one go. Stable on mobile, but not yet supported by web.
internal static var screenLabsEnableGalleryDescription: String { return L10n.tr("Localizable", "screen_labs_enable_gallery_description") }
/// Ask to join
internal static var screenLabsEnableKnocking: String { return L10n.tr("Localizable", "screen_labs_enable_knocking") }
/// Users can request access to a room that is not open for anyone to join. Stable on mobile, web implementation exists but is experimental.
internal static var screenLabsEnableKnockingDescription: String { return L10n.tr("Localizable", "screen_labs_enable_knocking_description") }
/// Enable thread replies
internal static var screenLabsEnableThreads: String { return L10n.tr("Localizable", "screen_labs_enable_threads") }
/// The app will restart to apply this change.
@@ -37,6 +37,7 @@ struct LabsScreenViewStateBindings {
protocol LabsOptionsProtocol: AnyObject {
var threadsEnabled: Bool { get set }
var galleryEnabled: Bool { get set }
var knockingEnabled: Bool { get set }
}
extension AppSettings: LabsOptionsProtocol { }
@@ -17,6 +17,7 @@ struct LabsScreen: View {
header
threadsSection
gallerySection
knockingSection
}
.compoundList()
.navigationTitle(L10n.screenLabsTitle)
@@ -71,6 +72,17 @@ struct LabsScreen: View {
.compoundListSectionFooter()
}
}
private var knockingSection: some View {
Section {
ListRow(label: .default(title: L10n.screenLabsEnableKnocking,
icon: \.askToJoin),
kind: .toggle($context.knockingEnabled))
} footer: {
Text(L10n.screenLabsEnableKnockingDescription)
.compoundListSectionFooter()
}
}
}
// MARK: - Previews
@@ -64,7 +64,6 @@ protocol DeveloperOptionsProtocol: AnyObject {
var fuzzyRoomListSearchEnabled: Bool { get set }
var lowPriorityFilterEnabled: Bool { get set }
var mentionsFilterEnabled: Bool { get set }
var knockingEnabled: Bool { get set }
var linkPreviewsEnabled: Bool { get set }
@@ -101,11 +101,6 @@ struct DeveloperOptionsScreen: View {
Text("Jump to unread")
Text("Adds a button to jump to the read marker, plus a presence dot on the scroll-to-bottom button when new messages arrive while scrolled away.")
}
Toggle(isOn: $context.knockingEnabled) {
Text("Knocking")
Text("Ask to join rooms")
}
}
Section {