From fa6e4b4488dc88ab38b545473d249178f5d67851 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bastian=20K=C3=B6cher?= <bkchr@users.noreply.github.com>
Date: Mon, 25 Jan 2021 21:50:45 +0100
Subject: [PATCH] Add a `convert_payload` function to `Signed` (#2320)

* Add a `convert_payload` function to `Signed`

* Review feedback
---
 polkadot/node/primitives/src/lib.rs |  6 ++++++
 polkadot/primitives/src/v0.rs       | 10 ++++++++++
 2 files changed, 16 insertions(+)

diff --git a/polkadot/node/primitives/src/lib.rs b/polkadot/node/primitives/src/lib.rs
index 5fb3f49308f..6c4e63861c1 100644
--- a/polkadot/node/primitives/src/lib.rs
+++ b/polkadot/node/primitives/src/lib.rs
@@ -85,6 +85,12 @@ impl Statement {
 	}
 }
 
+impl From<&'_ Statement> for CompactStatement {
+	fn from(stmt: &Statement) -> Self {
+		stmt.to_compact()
+	}
+}
+
 impl EncodeAs<CompactStatement> for Statement {
 	fn encode_as(&self) -> Vec<u8> {
 		self.to_compact().encode()
diff --git a/polkadot/primitives/src/v0.rs b/polkadot/primitives/src/v0.rs
index 7ce060c528a..348b5ad4b1d 100644
--- a/polkadot/primitives/src/v0.rs
+++ b/polkadot/primitives/src/v0.rs
@@ -921,6 +921,16 @@ impl<Payload: EncodeAs<RealPayload>, RealPayload: Encode> Signed<Payload, RealPa
 	pub fn into_payload(self) -> Payload {
 		self.payload
 	}
+
+	/// Convert `Payload` into `RealPayload`.
+	pub fn convert_payload(&self) -> Signed<RealPayload> where for<'a> &'a Payload: Into<RealPayload> {
+		Signed {
+			signature: self.signature.clone(),
+			validator_index: self.validator_index,
+			payload: self.payload().into(),
+			real_payload: sp_std::marker::PhantomData,
+		}
+	}
 }
 
 /// Custom validity errors used in Polkadot while validating transactions.
-- 
GitLab