chiark / gitweb /
log_did_to_piece nfc
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 5 Jan 2021 23:58:20 +0000 (23:58 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 5 Jan 2021 23:58:20 +0000 (23:58 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
daemon/api.rs

index d32ae9837a74c74d5aacb528bbbe5781f5e30ef8..2d10eb871b57ae1805e1c3237aa27ecbfad30519 100644 (file)
@@ -99,6 +99,18 @@ impl<'r> Responder<'r> for OnlineErrorResponse {
   }
 }
 
+fn log_did_to_piece<L: Lens + ?Sized>(
+  gpl: &GPlayerState, lens: &L, p: &dyn Piece, pc: &PieceState, piece: PieceId,
+  did: &str,
+) -> Vec<LogEntry> {
+  vec![ LogEntry { html: Html(format!(
+    "{} {} {}",
+    &htmlescape::encode_minimal(&gpl.nick),
+    did,
+    p.describe_pri(&lens.log_pri(piece, pc)).0
+  ))}]
+}
+
 #[throws(OE)]
 fn api_piece_op<O: ApiPieceOp>(form : Json<ApiPiece<O>>)
                    -> impl response::Responder<'static> {
@@ -357,12 +369,10 @@ impl ApiPieceOp for ApiPiecePin {
     let gpl = gs.players.byid(player).unwrap();
     pc.pinned = self.0;
     let update = PieceUpdateOp::Modify(());
-    let logents = vec![ LogEntry { html: Html(format!(
-      "{} {} {}",
-      &htmlescape::encode_minimal(&gpl.nick),
+    let logents = log_did_to_piece(
+      &gpl, lens, p, pc, piece,
       if pc.pinned { "pinned" } else { "unpinned" },
-      p.describe_pri(&lens.log_pri(piece, pc)).0
-    ))}];
+    );
     (WhatResponseToClientOp::Predictable,
      update, logents)
   }