diff --git a/Riot/Assets/Images.xcassets/Spaces/space_menu_plus_icon.imageset/Contents.json b/Riot/Assets/Images.xcassets/Spaces/space_menu_plus_icon.imageset/Contents.json
new file mode 100644
index 000000000..943055f00
--- /dev/null
+++ b/Riot/Assets/Images.xcassets/Spaces/space_menu_plus_icon.imageset/Contents.json
@@ -0,0 +1,26 @@
+{
+ "images" : [
+ {
+ "filename" : "space_menu_plus_icon.png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "space_menu_plus_icon@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "space_menu_plus_icon@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ },
+ "properties" : {
+ "template-rendering-intent" : "template"
+ }
+}
diff --git a/Riot/Assets/Images.xcassets/Spaces/space_menu_plus_icon.imageset/space_menu_plus_icon.png b/Riot/Assets/Images.xcassets/Spaces/space_menu_plus_icon.imageset/space_menu_plus_icon.png
new file mode 100644
index 000000000..cfc87199c
Binary files /dev/null and b/Riot/Assets/Images.xcassets/Spaces/space_menu_plus_icon.imageset/space_menu_plus_icon.png differ
diff --git a/Riot/Assets/Images.xcassets/Spaces/space_menu_plus_icon.imageset/space_menu_plus_icon@2x.png b/Riot/Assets/Images.xcassets/Spaces/space_menu_plus_icon.imageset/space_menu_plus_icon@2x.png
new file mode 100644
index 000000000..c3cc1ee60
Binary files /dev/null and b/Riot/Assets/Images.xcassets/Spaces/space_menu_plus_icon.imageset/space_menu_plus_icon@2x.png differ
diff --git a/Riot/Assets/Images.xcassets/Spaces/space_menu_plus_icon.imageset/space_menu_plus_icon@3x.png b/Riot/Assets/Images.xcassets/Spaces/space_menu_plus_icon.imageset/space_menu_plus_icon@3x.png
new file mode 100644
index 000000000..bf5489cc2
Binary files /dev/null and b/Riot/Assets/Images.xcassets/Spaces/space_menu_plus_icon.imageset/space_menu_plus_icon@3x.png differ
diff --git a/Riot/Assets/en.lproj/Vector.strings b/Riot/Assets/en.lproj/Vector.strings
index 11d41bfbe..a0ee6ef65 100644
--- a/Riot/Assets/en.lproj/Vector.strings
+++ b/Riot/Assets/en.lproj/Vector.strings
@@ -1747,6 +1747,7 @@ Tap the + to start adding people.";
"space_public_join_rule" = "Public space";
"spaces_invite_people" = "Invite people";
"spaces_add_room" = "Add room";
+"spaces_add_space" = "Add space";
// Mark: Avatar
diff --git a/Riot/Generated/Images.swift b/Riot/Generated/Images.swift
index 90b9439e3..b65cfa90f 100644
--- a/Riot/Generated/Images.swift
+++ b/Riot/Generated/Images.swift
@@ -201,6 +201,7 @@ internal enum Asset {
internal static let spaceMenuClose = ImageAsset(name: "space_menu_close")
internal static let spaceMenuLeave = ImageAsset(name: "space_menu_leave")
internal static let spaceMenuMembers = ImageAsset(name: "space_menu_members")
+ internal static let spaceMenuPlusIcon = ImageAsset(name: "space_menu_plus_icon")
internal static let spaceMenuRooms = ImageAsset(name: "space_menu_rooms")
internal static let spacePrivateIcon = ImageAsset(name: "space_private_icon")
internal static let spaceRoomIcon = ImageAsset(name: "space_room_icon")
diff --git a/Riot/Generated/Strings.swift b/Riot/Generated/Strings.swift
index 19f863ac0..cc6fa5133 100644
--- a/Riot/Generated/Strings.swift
+++ b/Riot/Generated/Strings.swift
@@ -4999,6 +4999,10 @@ public class VectorL10n: NSObject {
public static var spacesAddRoomsComingSoonTitle: String {
return VectorL10n.tr("Vector", "spaces_add_rooms_coming_soon_title")
}
+ /// Add space
+ public static var spacesAddSpace: String {
+ return VectorL10n.tr("Vector", "spaces_add_space")
+ }
/// This feature hasn’t been implemented here, but it’s on the way. For now, you can do that with Element on your computer.
public static var spacesComingSoonDetail: String {
return VectorL10n.tr("Vector", "spaces_coming_soon_detail")
diff --git a/Riot/Modules/SideMenu/SideMenuCoordinator.swift b/Riot/Modules/SideMenu/SideMenuCoordinator.swift
index 797e20818..7d738084c 100644
--- a/Riot/Modules/SideMenu/SideMenuCoordinator.swift
+++ b/Riot/Modules/SideMenu/SideMenuCoordinator.swift
@@ -342,6 +342,12 @@ extension SideMenuCoordinator: SpaceMenuPresenterDelegate {
self.showExploreRooms(spaceId: spaceId, session: session)
case .exploreMembers:
self.showMembers(spaceId: spaceId, session: session)
+ case .addRoom:
+ AppDelegate.theDelegate().showAlert(withTitle: VectorL10n.spacesAddRoom, message: VectorL10n.spacesComingSoonDetail)
+ case .addSpace:
+ AppDelegate.theDelegate().showAlert(withTitle: VectorL10n.spacesAddSpace, message: VectorL10n.spacesComingSoonDetail)
+ case .settings:
+ AppDelegate.theDelegate().showAlert(withTitle: VectorL10n.sideMenuActionSettings, message: VectorL10n.spacesComingSoonDetail)
}
}
}
diff --git a/Riot/Modules/Spaces/SpaceMenu/SpaceMenuListItemViewData.swift b/Riot/Modules/Spaces/SpaceMenu/SpaceMenuListItemViewData.swift
index 6f8b7378f..f9964201d 100644
--- a/Riot/Modules/Spaces/SpaceMenu/SpaceMenuListItemViewData.swift
+++ b/Riot/Modules/Spaces/SpaceMenu/SpaceMenuListItemViewData.swift
@@ -21,6 +21,9 @@ enum SpaceMenuListItemAction {
case showAllRoomsInHomeSpace
case exploreSpaceMembers
case exploreSpaceRooms
+ case addRoom
+ case addSpace
+ case settings
case leaveSpace
}
@@ -42,6 +45,8 @@ class SpaceMenuListItemViewData {
let style: SpaceMenuListItemStyle
let title: String?
let icon: UIImage?
+ let isBeta: Bool
+
/// Any value related to the type of data (e.g. `Bool` for `boolean` style, `nil` for `normal` and `destructive` style)
var value: Any? {
didSet {
@@ -50,11 +55,12 @@ class SpaceMenuListItemViewData {
}
weak var delegate: SpaceMenuListItemViewDataDelegate?
- init(action: SpaceMenuListItemAction, style: SpaceMenuListItemStyle, title: String?, icon: UIImage?, value: Any?) {
+ init(action: SpaceMenuListItemAction, style: SpaceMenuListItemStyle, title: String?, icon: UIImage?, value: Any?, isBeta: Bool = false) {
self.action = action
self.style = style
self.title = title
self.icon = icon
self.value = value
+ self.isBeta = isBeta
}
}
diff --git a/Riot/Modules/Spaces/SpaceMenu/SpaceMenuListViewCell.swift b/Riot/Modules/Spaces/SpaceMenu/SpaceMenuListViewCell.swift
index bc8243a9a..1ce0d2427 100644
--- a/Riot/Modules/Spaces/SpaceMenu/SpaceMenuListViewCell.swift
+++ b/Riot/Modules/Spaces/SpaceMenu/SpaceMenuListViewCell.swift
@@ -23,6 +23,8 @@ class SpaceMenuListViewCell: UITableViewCell, SpaceMenuCell, NibReusable {
@IBOutlet private weak var iconView: UIImageView!
@IBOutlet private weak var titleLabel: UILabel!
+ @IBOutlet private weak var betaView: UIView!
+ @IBOutlet private weak var betaLabel: UILabel!
@IBOutlet private weak var selectionView: UIView!
// MARK: - Private
@@ -64,6 +66,10 @@ class SpaceMenuListViewCell: UITableViewCell, SpaceMenuCell, NibReusable {
self.titleLabel.textColor = theme.colors.primaryContent
self.iconView.tintColor = theme.colors.secondaryContent
}
+
+ self.betaView.layer.masksToBounds = true
+ self.betaView.layer.cornerRadius = 4
+ self.betaView.isHidden = !viewData.isBeta
}
func update(theme: Theme) {
@@ -73,5 +79,8 @@ class SpaceMenuListViewCell: UITableViewCell, SpaceMenuCell, NibReusable {
self.titleLabel.textColor = theme.colors.primaryContent
self.titleLabel.font = theme.fonts.body
self.selectionView.backgroundColor = theme.colors.separator
+ self.betaLabel.font = theme.fonts.caption2SB
+ self.betaLabel.textColor = theme.colors.secondaryContent
+ self.betaView.backgroundColor = theme.colors.quinaryContent
}
}
diff --git a/Riot/Modules/Spaces/SpaceMenu/SpaceMenuListViewCell.xib b/Riot/Modules/Spaces/SpaceMenu/SpaceMenuListViewCell.xib
index 0d71ef2c6..b6825d18e 100644
--- a/Riot/Modules/Spaces/SpaceMenu/SpaceMenuListViewCell.xib
+++ b/Riot/Modules/Spaces/SpaceMenu/SpaceMenuListViewCell.xib
@@ -25,12 +25,30 @@
-