diff --git a/data/resources/resources.gresource.xml b/data/resources/resources.gresource.xml
index 7ea0ad7c..57a90645 100644
--- a/data/resources/resources.gresource.xml
+++ b/data/resources/resources.gresource.xml
@@ -44,6 +44,7 @@
ui/room-creation.ui
ui/session-verification.ui
ui/verification-emoji.ui
+ ui/incoming-verification.ui
ui/qr-code-scanner.ui
style.css
icons/scalable/actions/send-symbolic.svg
diff --git a/data/resources/ui/content.ui b/data/resources/ui/content.ui
index 9a56762c..e8b6156a 100644
--- a/data/resources/ui/content.ui
+++ b/data/resources/ui/content.ui
@@ -54,6 +54,31 @@
+
+
+
diff --git a/data/resources/ui/incoming-verification.ui b/data/resources/ui/incoming-verification.ui
new file mode 100644
index 00000000..f477b60f
--- /dev/null
+++ b/data/resources/ui/incoming-verification.ui
@@ -0,0 +1,455 @@
+
+
+
+
+
+
+ crossfade
+ True
+ 24
+ 24
+
+
+ accept-request
+
+
+ 400
+ 300
+
+
+ vertical
+ 18
+ center
+ center
+
+
+ Login Request From Another Session
+ True
+ word-char
+ center
+
+
+
+
+
+ Verify the new session with the current session.
+ True
+ word-char
+ center
+
+
+
+
+ resource:///org/gnome/FractalNext/icons/scalable/status/other-device.svg
+
+
+
+
+ center
+ 24
+
+
+ Dismiss
+ center
+ verification.dismiss
+
+
+
+
+
+ Accept
+ center
+
+
+
+
+
+
+
+
+
+
+
+
+
+ scan-qr-code
+
+
+ 400
+ 300
+
+
+ vertical
+ 18
+ center
+ center
+
+
+ Verify Session
+ True
+ word-char
+ center
+
+
+
+
+
+ Scan the Qr code with this session from another session logged into this account
+ True
+ word-char
+ center
+
+
+
+
+ 24
+ 24
+ True
+ True
+
+
+
+
+ Can't scan QR code?
+ True
+ word-char
+ center
+
+
+
+
+ Compare Emoji
+ center
+
+
+
+
+
+ Take a Screenshot of a Qr Code
+ center
+
+
+
+
+
+
+
+
+
+
+
+ qr-code-scanned
+
+
+ 400
+ 300
+
+
+ vertical
+ 18
+ center
+ center
+
+
+ Scan Complete
+ True
+ word-char
+ center
+
+
+
+
+
+ resource:///org/gnome/FractalNext/icons/scalable/status/setup-complete.svg
+
+
+
+
+ You scanned to qr code successfully. You may need to confirm the verification in the other session.
+ True
+ word-char
+ center
+
+
+
+
+
+
+
+
+
+
+ no-camera
+
+
+ 400
+ 300
+
+
+ vertical
+ 18
+ center
+ center
+
+
+ Verify Session
+ True
+ word-char
+ center
+
+
+
+
+
+ Select an option to verify the new session.
+ True
+ word-char
+ center
+
+
+
+
+ Compare Emoji
+ center
+
+
+
+
+
+ Take a Screenshot of a Qr Code
+ center
+
+
+
+
+
+
+
+
+
+
+
+ qrcode
+
+
+ 400
+ 300
+
+
+ vertical
+ 18
+ center
+ center
+
+
+ Verify Session
+ True
+ word-char
+ center
+
+
+
+
+
+ Scan this qr code with the newly logged in session.
+ True
+ word-char
+ center
+
+
+
+
+ center
+ center
+ 24
+ 24
+
+
+
+
+ Can't scan QR code?
+ True
+ word-char
+ center
+
+
+
+
+ center
+
+
+
+
+
+ Compare Emoji
+ center
+
+
+
+
+
+
+
+
+
+
+
+ emoji
+
+
+ 400
+ 300
+
+
+ vertical
+ 18
+ center
+ center
+
+
+ Verify Session
+ True
+ word-char
+ center
+
+
+
+
+
+ Check if the same emoji appear in the same order on the other device
+ True
+ word-char
+ center
+
+
+
+
+ center
+ center
+ 30
+ 24
+
+
+
+
+ center
+ center
+ 30
+ 24
+
+
+
+
+ Do Not Match
+ center
+
+
+
+
+
+ Match
+ center
+
+
+
+
+
+
+
+
+
+
+
+ completed
+
+
+ 400
+ 300
+
+
+ vertical
+ 18
+ center
+ center
+
+
+ Request Complete
+ True
+ word-char
+ center
+
+
+
+
+
+ resource:///org/gnome/FractalNext/icons/scalable/status/setup-complete.svg
+
+
+
+
+ The new session is now ready to send and receive secure messages.
+ True
+ word-char
+ center
+
+
+
+
+ Done
+ center
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/meson.build b/src/meson.build
index 74d0465f..db22af8f 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -98,6 +98,7 @@ sources = files(
'session/verification/mod.rs',
'session/verification/emoji.rs',
'session/verification/identity_verification.rs',
+ 'session/verification/incoming_verification.rs',
'session/verification/session_verification.rs',
'session/verification/verification_list.rs',
)
diff --git a/src/session/content/mod.rs b/src/session/content/mod.rs
index 1b0ecbd2..69b6e69b 100644
--- a/src/session/content/mod.rs
+++ b/src/session/content/mod.rs
@@ -18,7 +18,7 @@ use self::room_history::RoomHistory;
use self::state_row::StateRow;
use crate::session::sidebar::{Entry, EntryType};
-use crate::session::verification::IdentityVerification;
+use crate::session::verification::{IdentityVerification, IncomingVerification, VerificationMode};
use adw::subclass::prelude::*;
use gtk::{gio, glib, glib::clone, prelude::*, subclass::prelude::*, CompositeTemplate};
@@ -40,7 +40,7 @@ mod imp {
pub session: RefCell