Skip to content

Commit 91179eb

Browse files
committed
Fix browser media drag and drop handling
Add a shared DragPasteboardMedia importer for file URLs, file promises, and direct pasteboard media data from browser drags. Use the shared importer from Article List, Quick Post, Quick Share, and Writer so Chrome and x.com image drops follow the same code path. Prevent text editors from inserting browser drag placeholder text such as Image when the drop actually contains importable media. Make pasteboard media import more resilient by falling back from file URLs to raw item data, trying alternate media flavors after conversion failures, parsing file URL item representations more broadly, and avoiding duplicate imports when a file URL import already succeeded. Register DragPasteboardMedia.swift in the Xcode project and verify the Planet macOS Debug build with CODE_SIGNING_ALLOWED=NO.
1 parent 4edf5c0 commit 91179eb

9 files changed

Lines changed: 928 additions & 573 deletions

File tree

Planet.xcodeproj/project.pbxproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,7 @@
506506
6AFCF7E42B7353FE002299BA /* DequeModule in Frameworks */ = {isa = PBXBuildFile; productRef = 6AFCF7E32B7353FE002299BA /* DequeModule */; };
507507
6AFCF7E62B7353FE002299BA /* OrderedCollections in Frameworks */ = {isa = PBXBuildFile; productRef = 6AFCF7E52B7353FE002299BA /* OrderedCollections */; };
508508
6AFCF7E72B737371002299BA /* TemplateMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AC889412B71D4200090D355 /* TemplateMonitor.swift */; };
509+
6B50625D6A91C63998683BCA /* DragPasteboardMedia.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F4FA3B2D9A523EB833A02F3 /* DragPasteboardMedia.swift */; };
509510
71C58E70CF3E3F8A86F9ADF4 /* RelatedArticlesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CE71A58A58525049CC222C6 /* RelatedArticlesView.swift */; };
510511
7211413A9B3CC77620629D22 /* ViewUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 721143C73AEAD5F0C049DF86 /* ViewUtils.swift */; };
511512
7211421E15A5A630DF93A519 /* MyPlanetInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 721144D264DD084A74B49BF8 /* MyPlanetInfoView.swift */; };
@@ -552,6 +553,7 @@
552553
9F283A9A8EA2592CEC565037 /* SearchIndex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44BF4852CA45DC20EE145C58 /* SearchIndex.swift */; };
553554
A14E34849B8C45E69780141C /* SearchDatabase.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB6EC2B7EEF3EF83DA342363 /* SearchDatabase.swift */; };
554555
A8E3461C94DD9CF45659CC72 /* PlanetAIChatSessionsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C06A60D631FAB5EEF3BAF8C /* PlanetAIChatSessionsView.swift */; };
556+
B1554926223D7E6D8B65E40D /* DragPasteboardMedia.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F4FA3B2D9A523EB833A02F3 /* DragPasteboardMedia.swift */; };
555557
B2B22802B0B767E09FE903A2 /* ArticleSpeechPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72A8762054781F152975DEE9 /* ArticleSpeechPlayer.swift */; };
556558
BB6FC66D28423AF80072C3A1 /* SwiftSoup in Frameworks */ = {isa = PBXBuildFile; productRef = BB6FC66C28423AF80072C3A1 /* SwiftSoup */; };
557559
BB7FC8752898C70A00359802 /* libcmark_gfm in Frameworks */ = {isa = PBXBuildFile; productRef = BB7FC8742898C70A00359802 /* libcmark_gfm */; };
@@ -788,6 +790,7 @@
788790
2AFB897529BA3ED8003D893E /* PlanetKeyManagerModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlanetKeyManagerModel.swift; sourceTree = "<group>"; };
789791
2AFFD51A28AD760400EDB020 /* HelpLinkButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HelpLinkButton.swift; sourceTree = "<group>"; };
790792
2CCA533E0D21FAAEEEB5CE71 /* CoreSpotlight.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreSpotlight.framework; path = System/Library/Frameworks/CoreSpotlight.framework; sourceTree = SDKROOT; };
793+
2F4FA3B2D9A523EB833A02F3 /* DragPasteboardMedia.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DragPasteboardMedia.swift; sourceTree = "<group>"; };
791794
342A67E3EAD082AA10974830 /* NaturalLanguage.framework */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = wrapper.framework; name = NaturalLanguage.framework; path = System/Library/Frameworks/NaturalLanguage.framework; sourceTree = SDKROOT; };
792795
3BF7A284CCD68E7CBE9F9D73 /* fi */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/InfoPlist.strings; sourceTree = "<group>"; };
793796
412635EFFFDD8D11BBC4BC56 /* ThemeColorExtractor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ThemeColorExtractor.swift; sourceTree = "<group>"; };
@@ -1363,6 +1366,7 @@
13631366
C1A2B3D4E5F6A7B8C9D0E1F2 /* SleepPreventer.swift */,
13641367
03E9DC5C055F824D215A8981 /* MarkdownEditorTextView.swift */,
13651368
412635EFFFDD8D11BBC4BC56 /* ThemeColorExtractor.swift */,
1369+
2F4FA3B2D9A523EB833A02F3 /* DragPasteboardMedia.swift */,
13661370
);
13671371
path = Helper;
13681372
sourceTree = "<group>";
@@ -2270,6 +2274,7 @@
22702274
C1A2B3D4E5F6A7B8C9D0E1F3 /* SleepPreventer.swift in Sources */,
22712275
6AADD6C72AF8809600898A6E /* MyArticleModel+SavePublic.swift in Sources */,
22722276
BF9F577F9FFA8A77F474CF1A /* PlanetStore+Spotlight.swift in Sources */,
2277+
6B50625D6A91C63998683BCA /* DragPasteboardMedia.swift in Sources */,
22732278
);
22742279
runOnlyForDeploymentPostprocessing = 0;
22752280
};
@@ -2517,6 +2522,7 @@
25172522
B2B22802B0B767E09FE903A2 /* ArticleSpeechPlayer.swift in Sources */,
25182523
9F1807DD072155243C041DFC /* ThemeColorExtractor.swift in Sources */,
25192524
8F03F9FAEFE88AA819E13F28 /* FeatureFlags.swift in Sources */,
2525+
B1554926223D7E6D8B65E40D /* DragPasteboardMedia.swift in Sources */,
25202526
);
25212527
runOnlyForDeploymentPostprocessing = 0;
25222528
};

0 commit comments

Comments
 (0)