(payload: SessionImportPayload)
| 3926 | } |
| 3927 | |
| 3928 | fn normalize_import_payload(payload: SessionImportPayload) -> Vec<SessionExportEntry> { |
| 3929 | match payload { |
| 3930 | SessionImportPayload::Wrapped(file) => file.sessions, |
| 3931 | SessionImportPayload::Single(entry) => vec![entry], |
| 3932 | SessionImportPayload::Legacy { info, messages } => { |
| 3933 | let normalized_messages = messages |
| 3934 | .into_iter() |
| 3935 | .map(|legacy| { |
| 3936 | let mut msg = legacy.info; |
| 3937 | if msg.parts.is_empty() { |
| 3938 | msg.parts = legacy.parts; |
| 3939 | } |
| 3940 | msg |
| 3941 | }) |
| 3942 | .collect(); |
| 3943 | vec![SessionExportEntry { |
| 3944 | info, |
| 3945 | messages: normalized_messages, |
| 3946 | }] |
| 3947 | } |
| 3948 | } |
| 3949 | } |
| 3950 | |
| 3951 | fn parse_share_slug(url: &str) -> Option<String> { |
| 3952 | let trimmed = url.trim_end_matches('/'); |
no test coverage detected