Skip to content

Commit 34ac741

Browse files
authored
feat: Dropbox & OneDrive (#17)
* feat: Dropbox & OneDrive Fixes #14 * opt.: build version * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix
1 parent 66f1e90 commit 34ac741

28 files changed

Lines changed: 4146 additions & 31 deletions

MFuse.xcodeproj/project.pbxproj

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
/* Begin PBXBuildFile section */
1010
057CCCDC34587DE7A6DA3BA2 /* MFuseNFS in Frameworks */ = {isa = PBXBuildFile; productRef = 8BB648353E4FB4F8BBCB1D34 /* MFuseNFS */; };
11+
1AAD7B0BC72ABE5F80264FB1 /* MFuseOneDrive in Frameworks */ = {isa = PBXBuildFile; productRef = 057A9E18C9C0378ED91E1548 /* MFuseOneDrive */; };
1112
1E57605C6F274529C11F2FAB /* ConnectionEditorSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = F325A94183E879E246E11EF7 /* ConnectionEditorSheet.swift */; };
1213
23B5C506FA1032762E08B1D7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6D469675C816DBCC437E6D3C /* Assets.xcassets */; };
1314
288B5C71F50BB54A34945292 /* ExtensionGuideView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E3446371281C234280B5B96A /* ExtensionGuideView.swift */; };
@@ -19,6 +20,7 @@
1920
65D4F146E69F51400229DD28 /* FileProvider.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38A93FDCB4A831E494F223A9 /* FileProvider.framework */; };
2021
6CFC915ABB3E65C2A3A9069D /* AppSettingsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E2CAE2DCA895B496A33267B /* AppSettingsStore.swift */; };
2122
6E2ADD8447C2E0F96F71DE13 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 618EE0B5F204273106B71B31 /* ContentView.swift */; };
23+
718175CC56C61A6C4CC38ABB /* MFuseOneDrive in Frameworks */ = {isa = PBXBuildFile; productRef = 2238DB25509171322791DFC9 /* MFuseOneDrive */; };
2224
72A115D9CCD7002E3176B222 /* MFuseCore in Frameworks */ = {isa = PBXBuildFile; productRef = C7BD1586AC9E7DC89E58B6D8 /* MFuseCore */; };
2325
7870A11C4616210EF8341D5B /* AnimationConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAD39B59F4BB3BBDEDE4A134 /* AnimationConstants.swift */; };
2426
7C7BCD42BB471A66399444AC /* DomainManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 641045C86137A217F117D301 /* DomainManager.swift */; };
@@ -28,8 +30,10 @@
2830
87A0E9130A219F7A10866C26 /* MFuseS3 in Frameworks */ = {isa = PBXBuildFile; productRef = 341051C01A89D8EAD5829776 /* MFuseS3 */; };
2931
8F713A9460DCCDC5B4143EF1 /* MFuseApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1FF7DC0DBEBCEF62D05A4D8 /* MFuseApp.swift */; };
3032
9280FFEC860158072EC49B64 /* MFuseGoogleDrive in Frameworks */ = {isa = PBXBuildFile; productRef = 01BE4CF29ADF4AC95EB94419 /* MFuseGoogleDrive */; };
33+
9A2CE7A1D9300850C426465F /* MFuseDropbox in Frameworks */ = {isa = PBXBuildFile; productRef = 53893C16DF46E332B64FDD9D /* MFuseDropbox */; };
3134
9A927E7A00CE7322449E3653 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = E6E3037290FA5DA5D93FE3BB /* Localizable.xcstrings */; };
3235
9E9D0A54CD7DE9B2480875AD /* MFuseNFS in Frameworks */ = {isa = PBXBuildFile; productRef = 228EBBF46EDE11E9FDAAD28F /* MFuseNFS */; };
36+
9F242718A07CA40062A8695B /* MFuseDropbox in Frameworks */ = {isa = PBXBuildFile; productRef = 4767F4E5FE7D498198369BC1 /* MFuseDropbox */; };
3337
A2C5E6066BE413A084106C6F /* ConnectionManager+Finder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A62A28EC6E1BEDD2114EB15 /* ConnectionManager+Finder.swift */; };
3438
A4EF6B8BD2BC0595EC43850B /* MFuseCore in Frameworks */ = {isa = PBXBuildFile; productRef = 1633EC474157C61E42AD0085 /* MFuseCore */; };
3539
AA0A01F7AC49EDF70CC2E79E /* MFuseSMB in Frameworks */ = {isa = PBXBuildFile; productRef = 9515A704745A0275857BD362 /* MFuseSMB */; };
@@ -76,6 +80,7 @@
7680
00ED8446756C9B7AFE998232 /* SidebarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarView.swift; sourceTree = "<group>"; };
7781
05CEB8BCBB0786462FD52D96 /* MFuseSFTP */ = {isa = PBXFileReference; lastKnownFileType = folder; name = MFuseSFTP; path = Packages/MFuseSFTP; sourceTree = SOURCE_ROOT; };
7882
0FEDD6AFA9D8D60CEB649D77 /* FileProviderExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileProviderExtension.swift; sourceTree = "<group>"; };
83+
1FDA54F83A622F84D847A9DB /* MFuseOneDrive */ = {isa = PBXFileReference; lastKnownFileType = folder; name = MFuseOneDrive; path = Packages/MFuseOneDrive; sourceTree = SOURCE_ROOT; };
7984
282F68648AF3DFD0973FA2B2 /* FileProviderEnumerator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileProviderEnumerator.swift; sourceTree = "<group>"; };
8085
2A62A28EC6E1BEDD2114EB15 /* ConnectionManager+Finder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ConnectionManager+Finder.swift"; sourceTree = "<group>"; };
8186
32C99314CEA9551969438944 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = "<group>"; };
@@ -104,6 +109,7 @@
104109
9E49EE49DED987FC661F5175 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = "<group>"; };
105110
A1FF7DC0DBEBCEF62D05A4D8 /* MFuseApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MFuseApp.swift; sourceTree = "<group>"; };
106111
A2DA624F0F8F589D1C9AF275 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/InfoPlist.strings; sourceTree = "<group>"; };
112+
A787BEA167038040F6D58AEA /* MFuseDropbox */ = {isa = PBXFileReference; lastKnownFileType = folder; name = MFuseDropbox; path = Packages/MFuseDropbox; sourceTree = SOURCE_ROOT; };
107113
B64BE0FF0049FC47D89DBE6E /* MFuse.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = MFuse.entitlements; sourceTree = "<group>"; };
108114
B8450D10A58493639E045F51 /* MFuseCore */ = {isa = PBXFileReference; lastKnownFileType = folder; name = MFuseCore; path = Packages/MFuseCore; sourceTree = SOURCE_ROOT; };
109115
CAD39B59F4BB3BBDEDE4A134 /* AnimationConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimationConstants.swift; sourceTree = "<group>"; };
@@ -132,6 +138,8 @@
132138
7D24C4338D8350B1380FA05E /* MFuseFTP in Frameworks */,
133139
057CCCDC34587DE7A6DA3BA2 /* MFuseNFS in Frameworks */,
134140
DC00A9D9FBB1427A24E9D2A7 /* MFuseGoogleDrive in Frameworks */,
141+
9F242718A07CA40062A8695B /* MFuseDropbox in Frameworks */,
142+
718175CC56C61A6C4CC38ABB /* MFuseOneDrive in Frameworks */,
135143
);
136144
runOnlyForDeploymentPostprocessing = 0;
137145
};
@@ -147,6 +155,8 @@
147155
ECBAE427A6E52D9C15654D8C /* MFuseFTP in Frameworks */,
148156
9E9D0A54CD7DE9B2480875AD /* MFuseNFS in Frameworks */,
149157
9280FFEC860158072EC49B64 /* MFuseGoogleDrive in Frameworks */,
158+
9A2CE7A1D9300850C426465F /* MFuseDropbox in Frameworks */,
159+
1AAD7B0BC72ABE5F80264FB1 /* MFuseOneDrive in Frameworks */,
150160
65D4F146E69F51400229DD28 /* FileProvider.framework in Frameworks */,
151161
);
152162
runOnlyForDeploymentPostprocessing = 0;
@@ -204,9 +214,11 @@
204214
isa = PBXGroup;
205215
children = (
206216
B8450D10A58493639E045F51 /* MFuseCore */,
217+
A787BEA167038040F6D58AEA /* MFuseDropbox */,
207218
46A5BE9765F78698F83FEC3B /* MFuseFTP */,
208219
979E804BD93582C819EC72E2 /* MFuseGoogleDrive */,
209220
7E0A5DEBF20F84F9B2AB9423 /* MFuseNFS */,
221+
1FDA54F83A622F84D847A9DB /* MFuseOneDrive */,
210222
3B236DA03790F7A3CAC3D450 /* MFuseS3 */,
211223
05CEB8BCBB0786462FD52D96 /* MFuseSFTP */,
212224
7A58973432AF511AD634C0AE /* MFuseSMB */,
@@ -287,6 +299,8 @@
287299
5F7981F6ECF44B6960C2B77E /* MFuseFTP */,
288300
8BB648353E4FB4F8BBCB1D34 /* MFuseNFS */,
289301
ED0CE0B47675506BCC8A7362 /* MFuseGoogleDrive */,
302+
4767F4E5FE7D498198369BC1 /* MFuseDropbox */,
303+
2238DB25509171322791DFC9 /* MFuseOneDrive */,
290304
);
291305
productName = MFuse;
292306
productReference = 7C655C3F57148E2ED25B7A8E /* MFuse.app */;
@@ -314,6 +328,8 @@
314328
CD40DE46231CF253A97E3097 /* MFuseFTP */,
315329
228EBBF46EDE11E9FDAAD28F /* MFuseNFS */,
316330
01BE4CF29ADF4AC95EB94419 /* MFuseGoogleDrive */,
331+
53893C16DF46E332B64FDD9D /* MFuseDropbox */,
332+
057A9E18C9C0378ED91E1548 /* MFuseOneDrive */,
317333
);
318334
productName = MFuseProvider;
319335
productReference = EAB2F5EFB482FEEC4A83D05C /* MFuseProvider.appex */;
@@ -357,9 +373,11 @@
357373
minimizedProjectReferenceProxies = 1;
358374
packageReferences = (
359375
98734DE114F2A469269FA2FA /* XCLocalSwiftPackageReference "Packages/MFuseCore" */,
376+
49F4A73BD582C13DAF39D75D /* XCLocalSwiftPackageReference "Packages/MFuseDropbox" */,
360377
2D941051A877B937F3F5BD74 /* XCLocalSwiftPackageReference "Packages/MFuseFTP" */,
361378
0600921366C1500A25C8A6EB /* XCLocalSwiftPackageReference "Packages/MFuseGoogleDrive" */,
362379
A7A423F61F055C54836B24E9 /* XCLocalSwiftPackageReference "Packages/MFuseNFS" */,
380+
8360C2C2E8834C7FD198E9FC /* XCLocalSwiftPackageReference "Packages/MFuseOneDrive" */,
363381
DC9389FE68F25404D5107A47 /* XCLocalSwiftPackageReference "Packages/MFuseS3" */,
364382
1FC1509B83D57A659256B5DD /* XCLocalSwiftPackageReference "Packages/MFuseSFTP" */,
365383
3D308A1C371163F414FD9C45 /* XCLocalSwiftPackageReference "Packages/MFuseSMB" */,
@@ -533,6 +551,11 @@
533551
GCC_WARN_UNUSED_VARIABLE = YES;
534552
MACOSX_DEPLOYMENT_TARGET = 14.0;
535553
MARKETING_VERSION = 1.0.0;
554+
MFDROPBOX_CLIENT_ID = "";
555+
MFDROPBOX_REDIRECT_URI = "com.lollipopkit.mfuse.dropbox:/oauth";
556+
MFONEDRIVE_AUTHORITY = common;
557+
MFONEDRIVE_CLIENT_ID = "";
558+
MFONEDRIVE_REDIRECT_URI = "com.lollipopkit.mfuse.onedrive:/oauth";
536559
MTL_ENABLE_DEBUG_INFO = NO;
537560
MTL_FAST_MATH = YES;
538561
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -646,6 +669,11 @@
646669
GCC_WARN_UNUSED_VARIABLE = YES;
647670
MACOSX_DEPLOYMENT_TARGET = 14.0;
648671
MARKETING_VERSION = 1.0.0;
672+
MFDROPBOX_CLIENT_ID = "";
673+
MFDROPBOX_REDIRECT_URI = "com.lollipopkit.mfuse.dropbox:/oauth";
674+
MFONEDRIVE_AUTHORITY = common;
675+
MFONEDRIVE_CLIENT_ID = "";
676+
MFONEDRIVE_REDIRECT_URI = "com.lollipopkit.mfuse.onedrive:/oauth";
649677
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
650678
MTL_FAST_MATH = YES;
651679
ONLY_ACTIVE_ARCH = YES;
@@ -729,6 +757,14 @@
729757
isa = XCLocalSwiftPackageReference;
730758
relativePath = Packages/MFuseSMB;
731759
};
760+
49F4A73BD582C13DAF39D75D /* XCLocalSwiftPackageReference "Packages/MFuseDropbox" */ = {
761+
isa = XCLocalSwiftPackageReference;
762+
relativePath = Packages/MFuseDropbox;
763+
};
764+
8360C2C2E8834C7FD198E9FC /* XCLocalSwiftPackageReference "Packages/MFuseOneDrive" */ = {
765+
isa = XCLocalSwiftPackageReference;
766+
relativePath = Packages/MFuseOneDrive;
767+
};
732768
98734DE114F2A469269FA2FA /* XCLocalSwiftPackageReference "Packages/MFuseCore" */ = {
733769
isa = XCLocalSwiftPackageReference;
734770
relativePath = Packages/MFuseCore;
@@ -752,6 +788,10 @@
752788
isa = XCSwiftPackageProductDependency;
753789
productName = MFuseGoogleDrive;
754790
};
791+
057A9E18C9C0378ED91E1548 /* MFuseOneDrive */ = {
792+
isa = XCSwiftPackageProductDependency;
793+
productName = MFuseOneDrive;
794+
};
755795
0BA856AE22E92DFE17033D1E /* MFuseSMB */ = {
756796
isa = XCSwiftPackageProductDependency;
757797
productName = MFuseSMB;
@@ -768,6 +808,10 @@
768808
isa = XCSwiftPackageProductDependency;
769809
productName = MFuseCore;
770810
};
811+
2238DB25509171322791DFC9 /* MFuseOneDrive */ = {
812+
isa = XCSwiftPackageProductDependency;
813+
productName = MFuseOneDrive;
814+
};
771815
228EBBF46EDE11E9FDAAD28F /* MFuseNFS */ = {
772816
isa = XCSwiftPackageProductDependency;
773817
productName = MFuseNFS;
@@ -776,6 +820,14 @@
776820
isa = XCSwiftPackageProductDependency;
777821
productName = MFuseS3;
778822
};
823+
4767F4E5FE7D498198369BC1 /* MFuseDropbox */ = {
824+
isa = XCSwiftPackageProductDependency;
825+
productName = MFuseDropbox;
826+
};
827+
53893C16DF46E332B64FDD9D /* MFuseDropbox */ = {
828+
isa = XCSwiftPackageProductDependency;
829+
productName = MFuseDropbox;
830+
};
779831
5F7981F6ECF44B6960C2B77E /* MFuseFTP */ = {
780832
isa = XCSwiftPackageProductDependency;
781833
productName = MFuseFTP;

MFuse/Info.plist

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,25 @@
1414
<string>6.0</string>
1515
<key>CFBundleName</key>
1616
<string>$(PRODUCT_NAME)</string>
17+
<key>CFBundleURLTypes</key>
18+
<array>
19+
<dict>
20+
<key>CFBundleURLName</key>
21+
<string>com.lollipopkit.mfuse.dropbox</string>
22+
<key>CFBundleURLSchemes</key>
23+
<array>
24+
<string>com.lollipopkit.mfuse.dropbox</string>
25+
</array>
26+
</dict>
27+
<dict>
28+
<key>CFBundleURLName</key>
29+
<string>com.lollipopkit.mfuse.onedrive</string>
30+
<key>CFBundleURLSchemes</key>
31+
<array>
32+
<string>com.lollipopkit.mfuse.onedrive</string>
33+
</array>
34+
</dict>
35+
</array>
1736
<key>CFBundlePackageType</key>
1837
<string>APPL</string>
1938
<key>AppIdentifierPrefix</key>
@@ -28,6 +47,16 @@
2847
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
2948
<key>NSMainStoryboardFile</key>
3049
<string></string>
50+
<key>MFDropboxClientID</key>
51+
<string>$(MFDROPBOX_CLIENT_ID)</string>
52+
<key>MFDropboxRedirectURI</key>
53+
<string>$(MFDROPBOX_REDIRECT_URI)</string>
54+
<key>MFOneDriveAuthority</key>
55+
<string>$(MFONEDRIVE_AUTHORITY)</string>
56+
<key>MFOneDriveClientID</key>
57+
<string>$(MFONEDRIVE_CLIENT_ID)</string>
58+
<key>MFOneDriveRedirectURI</key>
59+
<string>$(MFONEDRIVE_REDIRECT_URI)</string>
3160
<key>NSPrincipalClass</key>
3261
<string>NSApplication</string>
3362
</dict>

MFuse/MFuseApp.swift

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import MFuseSMB
77
import MFuseFTP
88
import MFuseNFS
99
import MFuseGoogleDrive
10+
import MFuseDropbox
11+
import MFuseOneDrive
1012
import AppKit
1113

1214
@main
@@ -62,6 +64,22 @@ struct MFuseApp: App {
6264
) { updatedCredential in
6365
try await credentialProvider.store(updatedCredential, for: config.id)
6466
}
67+
},
68+
dropboxFactory: { config, credential in
69+
DropboxFileSystem(
70+
config: config,
71+
credential: credential
72+
) { updatedCredential in
73+
try await credentialProvider.store(updatedCredential, for: config.id)
74+
}
75+
},
76+
oneDriveFactory: { config, credential in
77+
OneDriveFileSystem(
78+
config: config,
79+
credential: credential
80+
) { updatedCredential in
81+
try await credentialProvider.store(updatedCredential, for: config.id)
82+
}
6583
}
6684
)
6785
let manager = ConnectionManager(

0 commit comments

Comments
 (0)