-Invest in SimpleX Chat. [Register now](https://simplexchat.typeform.com/crowdfunding).
+Invest in SimpleX Chat. [Learn more on Wefunder](https://wefunder.com/simplexchat).
# SimpleX - the first messaging platform that has no user identifiers of any kind - 100% private by design!
diff --git a/apps/ios/Shared/Views/NewChat/NewChatView.swift b/apps/ios/Shared/Views/NewChat/NewChatView.swift
index a87b9b46f4..51746766bd 100644
--- a/apps/ios/Shared/Views/NewChat/NewChatView.swift
+++ b/apps/ios/Shared/Views/NewChat/NewChatView.swift
@@ -859,8 +859,8 @@ enum ConnectTarget {
func strConnectTarget(_ str: String) -> ConnectTarget? {
let parsedMd = parseSimpleXMarkdown(str)
let links = parsedMd?.filter { $0.format?.isSimplexLink ?? false } ?? []
- return if links.count == 1, case let .simplexLink(_, linkType, _, smpHosts) = links[0].format {
- .link(text: links[0].text, linkType: linkType, linkText: simplexLinkText(linkType, smpHosts))
+ return if links.count == 1, case let .simplexLink(showText, linkType, simplexUri, smpHosts) = links[0].format {
+ .link(text: showText != nil ? simplexUri : links[0].text, linkType: linkType, linkText: simplexLinkText(linkType, smpHosts))
} else if links.isEmpty,
let nameFt = parsedMd?.first(where: { if case .simplexName = $0.format { true } else { false } }),
case let .simplexName(nameInfo) = nameFt.format {
diff --git a/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift b/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift
index b7753e8539..6ea24ec91c 100644
--- a/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift
+++ b/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift
@@ -8,6 +8,7 @@
// Spec: spec/client/navigation.md
import SwiftUI
+import StoreKit
import SimpleXChat
private struct VersionDescription {
@@ -41,6 +42,8 @@ private struct FeatureView {
let view: () -> any View
}
+private let isInUS = SKStorefront().countryCode == "USA"
+
private let versionDescriptions: [VersionDescription] = [
VersionDescription(
version: "v4.2",
@@ -667,7 +670,13 @@ private let versionDescriptions: [VersionDescription] = [
VersionDescription(
version: "v7.0",
post: nil,
- features: [
+ features: (isInUS ? [
+ .view(FeatureView(
+ icon: nil,
+ title: "Invest in SimpleX Chat",
+ view: { InvestInSimpleXChat() }
+ ))
+ ] : []) + [
.feature(Description(
icon: "at",
title: "SimpleX public names (BETA)",
@@ -762,6 +771,42 @@ fileprivate struct CreateUpdateAddressShortLink: View {
}
}
+fileprivate struct InvestInSimpleXChat: View {
+ @Environment(\.colorScheme) var colorScheme
+ @EnvironmentObject var theme: AppTheme
+
+ var body: some View {
+ HStack(alignment: .top, spacing: 8) {
+ VStack(alignment: .leading, spacing: 4) {
+ HStack(alignment: .center, spacing: 4) {
+ Image(systemName: "dollarsign.circle")
+ .symbolRenderingMode(.monochrome)
+ .foregroundColor(theme.colors.secondary)
+ .frame(minWidth: 30, alignment: .center)
+ Text(verbatim: "Invest in SimpleX Chat").font(.title3).bold()
+ }
+ Text(verbatim: "Equity crowdfunding launched!")
+ .multilineTextAlignment(.leading)
+ .lineLimit(2)
+ if let url = URL("https://wefunder.com/simplexchat") {
+ ExternalLink(destination: url) {
+ HStack {
+ Text(verbatim: "Learn more on Wefunder")
+ Image(systemName: "arrow.up.right.circle")
+ }
+ }
+ }
+ }
+ .frame(maxWidth: .infinity, alignment: .leading)
+ Image(colorScheme == .light ? "own-stake" : "own-stake-light")
+ .resizable()
+ .scaledToFill()
+ .frame(width: UIScreen.main.bounds.width / 5)
+ }
+ .frame(maxWidth: .infinity, alignment: .leading)
+ }
+}
+
private enum WhatsNewViewSheet: Identifiable {
case showConditions
diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj
index 0f7dab1eba..3b0c6ed57d 100644
--- a/apps/ios/SimpleX.xcodeproj/project.pbxproj
+++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj
@@ -183,8 +183,8 @@
64C3B0212A0D359700E19930 /* CustomTimePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64C3B0202A0D359700E19930 /* CustomTimePicker.swift */; };
64C8299D2D54AEEE006B9E89 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C829982D54AEED006B9E89 /* libgmp.a */; };
64C8299E2D54AEEE006B9E89 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C829992D54AEEE006B9E89 /* libffi.a */; };
- 64C8299F2D54AEEE006B9E89 /* libHSsimplex-chat-7.0.0.11-SNj2VtVeH9ARktfFtATBo-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C8299A2D54AEEE006B9E89 /* libHSsimplex-chat-7.0.0.11-SNj2VtVeH9ARktfFtATBo-ghc9.6.3.a */; };
- 64C829A02D54AEEE006B9E89 /* libHSsimplex-chat-7.0.0.11-SNj2VtVeH9ARktfFtATBo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C8299B2D54AEEE006B9E89 /* libHSsimplex-chat-7.0.0.11-SNj2VtVeH9ARktfFtATBo.a */; };
+ 64C8299F2D54AEEE006B9E89 /* libHSsimplex-chat-7.1.0.2-DOL5oxHswUnIfh2IFo9Jhf-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C8299A2D54AEEE006B9E89 /* libHSsimplex-chat-7.1.0.2-DOL5oxHswUnIfh2IFo9Jhf-ghc9.6.3.a */; };
+ 64C829A02D54AEEE006B9E89 /* libHSsimplex-chat-7.1.0.2-DOL5oxHswUnIfh2IFo9Jhf.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C8299B2D54AEEE006B9E89 /* libHSsimplex-chat-7.1.0.2-DOL5oxHswUnIfh2IFo9Jhf.a */; };
64C829A12D54AEEE006B9E89 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C8299C2D54AEEE006B9E89 /* libgmpxx.a */; };
64D0C2C029F9688300B38D5F /* UserAddressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64D0C2BF29F9688300B38D5F /* UserAddressView.swift */; };
64D0C2C229FA57AB00B38D5F /* UserAddressLearnMore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64D0C2C129FA57AB00B38D5F /* UserAddressLearnMore.swift */; };
@@ -563,8 +563,8 @@
64C3B0202A0D359700E19930 /* CustomTimePicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomTimePicker.swift; sourceTree = "{{ "index-hero-p1" | i18n({}, lang) | safe }}
+{{ "index-hero-invest" | i18n({}, lang) | safe }} {{ "index-hero-invest-cta" | i18n({}, lang) | safe }}