From 0a2e4a7df146749f3560db4b6cde26e93c471c26 Mon Sep 17 00:00:00 2001
From: MartinBraquet
Date: Thu, 26 Feb 2026 23:56:15 +0100
Subject: [PATCH] Add profile card to profile
---
android/app/build.gradle | 2 +-
common/messages/de.json | 4 +-
common/messages/fr.json | 4 +-
web/components/buttons/copy-link-button.tsx | 7 ++-
web/components/photos-modal.tsx | 46 +++++++++++++++++++
web/components/profile/profile-header.tsx | 2 +-
web/components/profile/profile-info.tsx | 5 ++
.../widgets/share-profile-button.tsx | 27 ++++++++++-
web/pages/onboarding/soft-gate.tsx | 13 +-----
9 files changed, 91 insertions(+), 19 deletions(-)
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 34c3dfdc..385389d8 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -8,7 +8,7 @@ android {
applicationId "com.compassconnections.app"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
- versionCode 42
+ versionCode 43
versionName "1.10.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
aaptOptions {
diff --git a/common/messages/de.json b/common/messages/de.json
index bde99674..9ee0535a 100644
--- a/common/messages/de.json
+++ b/common/messages/de.json
@@ -1248,5 +1248,7 @@
"profile.connect.interest_indicators_disabled": "{user} hat Interessenssignale deaktiviert",
"profile.connect.tips": "- Wählen Sie den Verbindungstyp, für den Sie offen sind.\n- Sie sehen dies nicht, es sei denn, sie wählen denselben Typ wie Sie.\n- Wenn Sie beide denselben Typ wählen, werden Sie beide benachrichtigt.",
"notifications.connection.mutual_title": "Es ist gegenseitig 🎉",
- "notifications.connection.mutual_body": "Du und {name} sind beide an einem {type} interessiert. Beginnen Sie das Gespräch."
+ "notifications.connection.mutual_body": "Du und {name} sind beide an einem {type} interessiert. Beginnen Sie das Gespräch.",
+ "share_profile.on_x": "Auf X teilen",
+ "share_profile.on_linkedin": "Auf LinkedIn teilen"
}
diff --git a/common/messages/fr.json b/common/messages/fr.json
index 8ee4d79c..ebd83875 100644
--- a/common/messages/fr.json
+++ b/common/messages/fr.json
@@ -1247,5 +1247,7 @@
"profile.connect.interest_indicators_disabled": "{user} a désactivé les indicateurs d'intérêt",
"profile.connect.tips": "- Vous choisissez le type de relation auquel vous êtes ouvert.\n- Ils ne verront pas ceci à moins qu'ils ne choisissent le même type que vous.\n- Si vous choisissez tous les deux le même type de relation, vous serez tous les deux notifiés.",
"notifications.connection.mutual_title": "C’est mutuel 🎉",
- "notifications.connection.mutual_body": "{name} et vous êtes tous deux intéressés par un(e) {type}. Commencez la conversation."
+ "notifications.connection.mutual_body": "{name} et vous êtes tous deux intéressés par un(e) {type}. Commencez la conversation.",
+ "share_profile.on_x": "Partager sur X",
+ "share_profile.on_linkedin": "Partager sur LinkedIn"
}
diff --git a/web/components/buttons/copy-link-button.tsx b/web/components/buttons/copy-link-button.tsx
index 74bf96fc..a2d55338 100644
--- a/web/components/buttons/copy-link-button.tsx
+++ b/web/components/buttons/copy-link-button.tsx
@@ -194,6 +194,7 @@ export const shareOnLinkedIn = (profileUrl: string) => {
}
export const ShareProfileOnXButton = (props: {username: string; className?: string}) => {
const {username, className} = props
+ const t = useT()
return (
)
}
+
export const ShareProfileOnLinkedinButton = (props: {username: string; className?: string}) => {
const {username, className} = props
+ const t = useT()
return (
)
}
diff --git a/web/components/photos-modal.tsx b/web/components/photos-modal.tsx
index d39df87c..f0437b6c 100644
--- a/web/components/photos-modal.tsx
+++ b/web/components/photos-modal.tsx
@@ -4,6 +4,7 @@ import {Button} from 'web/components/buttons/button'
import {Col} from 'web/components/layout/col'
import {Modal, MODAL_CLASS} from 'web/components/layout/modal'
import {Row} from 'web/components/layout/row'
+import {ShareProfileButtons} from 'web/components/widgets/share-profile-button'
export const PhotosModal = (props: {
open: boolean
@@ -37,3 +38,48 @@ export const PhotosModal = (props: {
)
}
+
+export const ExpandablePhoto = (props: {src: string; width?: number; height?: number}) => {
+ const {src, width = 1000, height = 1000} = props
+ const [open, setOpen] = useState(false)
+ return (
+
+ setOpen(true)}
+ />
+
+
+
+
+ )
+}
+
+export const PhotoButton = (props: {
+ src: string
+ username: string
+ width?: number
+ height?: number
+}) => {
+ const {src, username, width = 1000, height = 1000} = props
+ const [open, setOpen] = useState(false)
+ return (
+ <>
+
+
+
+
+
+
+
+ >
+ )
+}
diff --git a/web/components/profile/profile-header.tsx b/web/components/profile/profile-header.tsx
index 81c59721..934407cf 100644
--- a/web/components/profile/profile-header.tsx
+++ b/web/components/profile/profile-header.tsx
@@ -118,7 +118,7 @@ export default function ProfileHeader(props: {
{currentUser && isCurrentUser ? (
-
+
-
-
-
-
-
+
)}