From 6897ca94ebb6568e84460528aedd37d094f805fb Mon Sep 17 00:00:00 2001
From: Mauro <34335419+Velin92@users.noreply.github.com>
Date: Mon, 29 May 2023 10:41:01 +0200
Subject: [PATCH] Showing the iOS default silhoutte when the user/room avatar
is missing (#965)
* fix
* Element X app name
* project update
* improvement
---
ElementX.xcodeproj/project.pbxproj | 8 ++++++--
ElementX/Sources/Application/AppCoordinator.swift | 2 +-
.../Sources/Other/Extensions/UNNotificationContent.swift | 4 ++--
ElementX/SupportingFiles/target.yml | 2 +-
NSE/SupportingFiles/Info.plist | 2 +-
NSE/SupportingFiles/target.yml | 3 ++-
changelog.d/pr-965.change | 1 +
project.yml | 1 +
8 files changed, 15 insertions(+), 8 deletions(-)
create mode 100644 changelog.d/pr-965.change
diff --git a/ElementX.xcodeproj/project.pbxproj b/ElementX.xcodeproj/project.pbxproj
index 0d73d3b49..f17c78af6 100644
--- a/ElementX.xcodeproj/project.pbxproj
+++ b/ElementX.xcodeproj/project.pbxproj
@@ -4252,6 +4252,7 @@
);
MARKETING_VERSION = "$(MARKETING_VERSION)";
PRODUCT_BUNDLE_IDENTIFIER = "${BASE_BUNDLE_IDENTIFIER}.nse";
+ PRODUCT_DISPLAY_NAME = "$(APP_NAME)";
PRODUCT_NAME = NSE;
SDKROOT = iphoneos;
SWIFT_OBJC_INTERFACE_HEADER_NAME = "GeneratedInterface-Swift.h";
@@ -4274,7 +4275,7 @@
);
MARKETING_VERSION = "$(MARKETING_VERSION)";
PRODUCT_BUNDLE_IDENTIFIER = "$(BASE_BUNDLE_IDENTIFIER)";
- PRODUCT_NAME = ElementX;
+ PRODUCT_NAME = "$(APP_NAME)";
SDKROOT = iphoneos;
SWIFT_OBJC_BRIDGING_HEADER = "ElementX/SupportingFiles/ElementX-Bridging-Header.h";
SWIFT_OBJC_INTERFACE_HEADER_NAME = "GeneratedInterface-Swift.h";
@@ -4297,7 +4298,7 @@
);
MARKETING_VERSION = "$(MARKETING_VERSION)";
PRODUCT_BUNDLE_IDENTIFIER = "$(BASE_BUNDLE_IDENTIFIER)";
- PRODUCT_NAME = ElementX;
+ PRODUCT_NAME = "$(APP_NAME)";
SDKROOT = iphoneos;
SWIFT_OBJC_BRIDGING_HEADER = "ElementX/SupportingFiles/ElementX-Bridging-Header.h";
SWIFT_OBJC_INTERFACE_HEADER_NAME = "GeneratedInterface-Swift.h";
@@ -4328,6 +4329,7 @@
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
APP_GROUP_IDENTIFIER = "group.$(BASE_APP_GROUP_IDENTIFIER)";
+ APP_NAME = ElementX;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = Colors/AccentColor;
BASE_APP_GROUP_IDENTIFIER = io.element;
BASE_BUNDLE_IDENTIFIER = io.element.elementx;
@@ -4395,6 +4397,7 @@
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
APP_GROUP_IDENTIFIER = "group.$(BASE_APP_GROUP_IDENTIFIER)";
+ APP_NAME = ElementX;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = Colors/AccentColor;
BASE_APP_GROUP_IDENTIFIER = io.element;
BASE_BUNDLE_IDENTIFIER = io.element.elementx;
@@ -4532,6 +4535,7 @@
);
MARKETING_VERSION = "$(MARKETING_VERSION)";
PRODUCT_BUNDLE_IDENTIFIER = "${BASE_BUNDLE_IDENTIFIER}.nse";
+ PRODUCT_DISPLAY_NAME = "$(APP_NAME)";
PRODUCT_NAME = NSE;
SDKROOT = iphoneos;
SWIFT_OBJC_INTERFACE_HEADER_NAME = "GeneratedInterface-Swift.h";
diff --git a/ElementX/Sources/Application/AppCoordinator.swift b/ElementX/Sources/Application/AppCoordinator.swift
index ec09239f5..797b6c012 100644
--- a/ElementX/Sources/Application/AppCoordinator.swift
+++ b/ElementX/Sources/Application/AppCoordinator.swift
@@ -136,7 +136,7 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationCoordinatorDelegate,
}
func shouldDisplayInAppNotification(_ service: NotificationManagerProtocol, content: UNNotificationContent) -> Bool {
- guard let roomId = content.userInfo[NotificationConstants.UserInfoKey.roomIdentifier] as? String else {
+ guard let roomId = content.roomID else {
return true
}
guard let userSessionFlowCoordinator else {
diff --git a/ElementX/Sources/Other/Extensions/UNNotificationContent.swift b/ElementX/Sources/Other/Extensions/UNNotificationContent.swift
index 916ae01b7..221e92a44 100644
--- a/ElementX/Sources/Other/Extensions/UNNotificationContent.swift
+++ b/ElementX/Sources/Other/Extensions/UNNotificationContent.swift
@@ -123,7 +123,7 @@ extension UNMutableNotificationContent {
senderID: String,
senderName: String,
iconType: NotificationIconType) async throws -> UNMutableNotificationContent {
- var image: INImage?
+ var image = INImage(named: "")
if let mediaSource = iconType.mediaSource {
switch await mediaProvider?.loadImageDataFromSource(mediaSource) {
case .success(let data):
@@ -161,7 +161,7 @@ extension UNMutableNotificationContent {
serviceName: nil,
sender: sender,
attachments: nil)
- if speakableGroupName != nil, let image {
+ if speakableGroupName != nil {
intent.setImage(image, forParameterNamed: \.speakableGroupName)
}
diff --git a/ElementX/SupportingFiles/target.yml b/ElementX/SupportingFiles/target.yml
index 2623c95b2..9b40df75c 100644
--- a/ElementX/SupportingFiles/target.yml
+++ b/ElementX/SupportingFiles/target.yml
@@ -74,7 +74,7 @@ targets:
settings:
base:
- PRODUCT_NAME: ElementX
+ PRODUCT_NAME: $(APP_NAME)
PRODUCT_BUNDLE_IDENTIFIER: $(BASE_BUNDLE_IDENTIFIER)
MARKETING_VERSION: $(MARKETING_VERSION)
CURRENT_PROJECT_VERSION: $(CURRENT_PROJECT_VERSION)
diff --git a/NSE/SupportingFiles/Info.plist b/NSE/SupportingFiles/Info.plist
index 48adae1ec..4a96dacf4 100644
--- a/NSE/SupportingFiles/Info.plist
+++ b/NSE/SupportingFiles/Info.plist
@@ -5,7 +5,7 @@
CFBundleDevelopmentRegion
$(DEVELOPMENT_LANGUAGE)
CFBundleDisplayName
- $(PRODUCT_NAME)
+ $(PRODUCT_DISPLAY_NAME)
CFBundleExecutable
$(EXECUTABLE_NAME)
CFBundleIdentifier
diff --git a/NSE/SupportingFiles/target.yml b/NSE/SupportingFiles/target.yml
index cc5adcd84..3ad2c6245 100644
--- a/NSE/SupportingFiles/target.yml
+++ b/NSE/SupportingFiles/target.yml
@@ -40,7 +40,7 @@ targets:
info:
path: ../SupportingFiles/Info.plist
properties:
- CFBundleDisplayName: $(PRODUCT_NAME)
+ CFBundleDisplayName: $(PRODUCT_DISPLAY_NAME)
CFBundleShortVersionString: $(MARKETING_VERSION)
CFBundleVersion: $(CURRENT_PROJECT_VERSION)
appGroupIdentifier: $(APP_GROUP_IDENTIFIER)
@@ -53,6 +53,7 @@ targets:
settings:
base:
PRODUCT_NAME: NSE
+ PRODUCT_DISPLAY_NAME: $(APP_NAME)
PRODUCT_BUNDLE_IDENTIFIER: ${BASE_BUNDLE_IDENTIFIER}.nse
MARKETING_VERSION: $(MARKETING_VERSION)
CURRENT_PROJECT_VERSION: $(CURRENT_PROJECT_VERSION)
diff --git a/changelog.d/pr-965.change b/changelog.d/pr-965.change
new file mode 100644
index 000000000..3bc6f8be2
--- /dev/null
+++ b/changelog.d/pr-965.change
@@ -0,0 +1 @@
+Showing the iOS default contact/group silhouette in notifications when the avatar is missing.
\ No newline at end of file
diff --git a/project.yml b/project.yml
index 1fd824c62..6ff146bd1 100644
--- a/project.yml
+++ b/project.yml
@@ -26,6 +26,7 @@ settings:
BASE_APP_GROUP_IDENTIFIER: io.element
APP_GROUP_IDENTIFIER: group.$(BASE_APP_GROUP_IDENTIFIER)
BASE_BUNDLE_IDENTIFIER: io.element.elementx
+ APP_NAME: ElementX
KEYCHAIN_ACCESS_GROUP_IDENTIFIER: $(AppIdentifierPrefix)$(BASE_BUNDLE_IDENTIFIER)
MARKETING_VERSION: 1.1.2
CURRENT_PROJECT_VERSION: 1