Skip to content

Native SwiftUI Interface #34

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 71 commits into from
Jun 4, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
100ed76
first pass, functional file list
raluaces Apr 19, 2025
a0ffc58
fix hidden toolbar on iphone
raluaces Apr 19, 2025
13b17ad
huge changes
raluaces Apr 23, 2025
6c179bc
initial setup fixes
raluaces Apr 23, 2025
faa4afc
fix user info showing
raluaces Apr 24, 2025
b5ee780
more functionality, unified preview
raluaces Apr 27, 2025
e4347b1
album list, short list, more context menu, zoomable preview
raluaces Apr 29, 2025
089b3ec
Basic websocket and ws toast functionality
raluaces May 1, 2025
fe9744f
delete support and unified context menu
raluaces May 15, 2025
96d19ec
private toggle func and file status icons
raluaces May 15, 2025
338ed87
Fix private/password previews
raluaces May 16, 2025
d758316
adds file password functionality
raluaces May 16, 2025
71f0e7a
fix raw links
raluaces May 16, 2025
6384a60
file rename support
raluaces May 17, 2025
b7756aa
use the correct method of renaming
raluaces May 17, 2025
1b6ea3e
settings, fixes new app setup flow, thumbs, refinements
raluaces May 18, 2025
7712062
stray comma
raluaces May 18, 2025
ac9a43b
better image preview, and code syntax highlighting
raluaces May 18, 2025
abfc00a
more ui improvements and preview fixes
raluaces May 18, 2025
7df5efd
upload sheet fix, in app uploads
raluaces May 18, 2025
88aa707
major improvements
raluaces May 19, 2025
9c16856
list visual fixes, and stop refresh after preview
raluaces May 19, 2025
cc321f7
stupid encryption thing keeps resetting
raluaces May 19, 2025
7b2b37e
improve auth fail handling, login flow
raluaces May 20, 2025
23540e4
fix nav stack for changing servers, make shorts copy
raluaces May 20, 2025
8710d6b
image caching and short creator
raluaces May 20, 2025
f5db4c2
split out image cache
raluaces May 20, 2025
fa653ee
create album functionality, api cleanup
raluaces May 21, 2025
09d8eb1
file info
raluaces May 21, 2025
dcd791d
tweaks to list and previews
raluaces May 21, 2025
201ab6e
hookup creator functions, album delete, misc fixes
raluaces May 21, 2025
30ab4d4
audio preview support, camera capture, minor tweaks
raluaces May 22, 2025
73d7d9d
set album on upload
raluaces May 22, 2025
128d0b7
fixes to audio preview
raluaces May 22, 2025
3887f47
file preview detail support, attempt fixing info plist
raluaces May 22, 2025
e7c02e5
better file info and swipe to delete files
raluaces May 22, 2025
f10bd2e
fix
raluaces May 22, 2025
5587862
misc fixes and cleanup
raluaces May 23, 2025
98646bd
better login flow
raluaces May 23, 2025
5f8e1e4
preview improvements and thumbnail long press preview
raluaces May 27, 2025
8822807
fix context open preview
raluaces May 27, 2025
4aa7576
file preview improvements
raluaces May 27, 2025
e8bb02a
empty list adjustments
raluaces May 27, 2025
49a72be
minor tweaks to loading
raluaces May 27, 2025
0a2cfba
fix crash for album views after server change
raluaces May 28, 2025
d0b84f6
add qr code auth
raluaces May 29, 2025
8257e8b
preview improvements
raluaces May 29, 2025
c571ecd
dupe auth prevention using qr
raluaces May 30, 2025
ccef856
ton of misc little fixes
raluaces May 30, 2025
5379d06
preview refactor, fix tab views and server selection,notify on login
raluaces May 31, 2025
d52a2a6
misc fixes and onboarding screen
raluaces May 31, 2025
0c5a287
fix albums fetch issue, preview refinements, misc fixes
raluaces May 31, 2025
d47bf2b
make share sheet from preview better
raluaces May 31, 2025
9acce0e
fix deeplink auth cookies, tab selection, old deeplinks
raluaces May 31, 2025
bae5852
delete and rename hooked up for live updates, list and preview
raluaces May 31, 2025
081b96b
fix the rest of the context menu and live updates
raluaces May 31, 2025
2bfeff3
firebase setup
raluaces May 31, 2025
be4c156
fix text field not hidden with non text sharing sheet
raluaces May 31, 2025
e398ed1
rename websocket handler
raluaces May 31, 2025
a882808
fix share sheet crash on ipad from preview
raluaces Jun 1, 2025
a7009ed
major preview refinement, and login flow fixes
raluaces Jun 1, 2025
cad717c
fix json support
raluaces Jun 3, 2025
14a2dad
update readme
raluaces Jun 3, 2025
8c5033c
stupid gh runner is failing tests that pass locally
raluaces Jun 3, 2025
c578ba0
just disable all ui tests for now
raluaces Jun 3, 2025
a5e6a4f
readd the function to clear app data for tests
raluaces Jun 4, 2025
f6070d4
this is getting old
raluaces Jun 4, 2025
82ce2a3
fix main actor and remove test launch performance
raluaces Jun 4, 2025
678f168
attempt to disable firebase in tests
raluaces Jun 4, 2025
2a95d6a
another attempt to disable firebase
raluaces Jun 4, 2025
9fc1989
add google services to test run
raluaces Jun 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ jobs:
with:
ssh-private-key: ${{ secrets.SSH_KEY }}

- name: "Google Services File"
run: |
echo "${{ secrets.GOOGLE_SERVICES }}" | base64 --decode > "Django Files/GoogleService-Info.plist"

- name: "Fastlane ${{ env.command }}"
run: fastlane ${{ env.command }}
env:
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@ jobs:
with:
ssh-private-key: ${{ secrets.SSH_KEY }}

- name: "Google Services File"
run: |
echo "${{ secrets.GOOGLE_SERVICES }}" | base64 --decode > "Django Files/GoogleService-Info.plist"

- name: "Fastlane Tests"
run: fastlane tests
env:
Expand Down
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,6 @@ xcuserdata/
.DS_Store
report.xml
report.html
report.junit
report.junit

GoogleService-Info.plist
57 changes: 51 additions & 6 deletions Django Files.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
4CA2E48A2D6D49D6006EF3F0 /* HTTPTypes in Frameworks */ = {isa = PBXBuildFile; productRef = 4CA2E4892D6D49D6006EF3F0 /* HTTPTypes */; };
4CA2E48C2D6D49D6006EF3F0 /* HTTPTypesFoundation in Frameworks */ = {isa = PBXBuildFile; productRef = 4CA2E48B2D6D49D6006EF3F0 /* HTTPTypesFoundation */; };
4CE57E8B2D7C9F440073CFC1 /* SnapshotHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE57E8A2D7C9F440073CFC1 /* SnapshotHelper.swift */; };
A21CC8852DEB967300EF776C /* FirebaseAnalytics in Frameworks */ = {isa = PBXBuildFile; productRef = A21CC8842DEB967300EF776C /* FirebaseAnalytics */; };
A21CC88B2DEB991100EF776C /* FirebaseCrashlytics in Frameworks */ = {isa = PBXBuildFile; productRef = A21CC88A2DEB991100EF776C /* FirebaseCrashlytics */; };
A2DF11D52DDA13FE0096E7C4 /* HighlightSwift in Frameworks */ = {isa = PBXBuildFile; productRef = A2DF11D42DDA13FE0096E7C4 /* HighlightSwift */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
Expand Down Expand Up @@ -79,11 +82,14 @@
4CA2E47D2D6D22CA006EF3F0 /* Exceptions for "Django Files" folder in "UploadAndCopy" target */ = {
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
membershipExceptions = (
API/Albums.swift,
API/DFAPI.swift,
API/Error.swift,
API/Files.swift,
API/Short.swift,
API/Stats.swift,
API/Upload.swift,
API/Websocket.swift,
Models/DjangoFilesSession.swift,
);
target = 4C82CB7E2D624E8700C0893B /* UploadAndCopy */;
Expand Down Expand Up @@ -125,7 +131,10 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
A2DF11D52DDA13FE0096E7C4 /* HighlightSwift in Frameworks */,
4C82CB512D62372200C0893B /* HTTPTypes in Frameworks */,
A21CC88B2DEB991100EF776C /* FirebaseCrashlytics in Frameworks */,
A21CC8852DEB967300EF776C /* FirebaseAnalytics in Frameworks */,
4C82CB532D62372200C0893B /* HTTPTypesFoundation in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
Expand Down Expand Up @@ -211,6 +220,9 @@
packageProductDependencies = (
4C82CB502D62372200C0893B /* HTTPTypes */,
4C82CB522D62372200C0893B /* HTTPTypesFoundation */,
A2DF11D42DDA13FE0096E7C4 /* HighlightSwift */,
A21CC8842DEB967300EF776C /* FirebaseAnalytics */,
A21CC88A2DEB991100EF776C /* FirebaseCrashlytics */,
);
productName = "Django Files";
productReference = 4C5E20EC2D603C3B009EE83A /* Django Files.app */;
Expand Down Expand Up @@ -324,6 +336,8 @@
packageReferences = (
4C82CB4F2D62372200C0893B /* XCRemoteSwiftPackageReference "swift-http-types" */,
4CE57E892D7C9EB70073CFC1 /* XCRemoteSwiftPackageReference "fastlane" */,
A2DF11D32DDA12CA0096E7C4 /* XCRemoteSwiftPackageReference "highlightswift" */,
A21CC8832DEB950C00EF776C /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */,
);
preferredProjectObjectVersion = 77;
productRefGroup = 4C5E20ED2D603C3B009EE83A /* Products */;
Expand Down Expand Up @@ -445,7 +459,7 @@
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "This lets you save or upload photos to your Django Files";
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
Expand Down Expand Up @@ -491,7 +505,7 @@
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "This lets you save or upload photos to your Django Files";
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
Expand Down Expand Up @@ -564,7 +578,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 18.2;
IPHONEOS_DEPLOYMENT_TARGET = 18.0;
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
Expand Down Expand Up @@ -621,7 +635,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 18.2;
IPHONEOS_DEPLOYMENT_TARGET = 18.0;
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
Expand All @@ -639,7 +653,7 @@
CURRENT_PROJECT_VERSION = 0;
DEVELOPMENT_TEAM = ZY6BPTGK47;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 18.2;
IPHONEOS_DEPLOYMENT_TARGET = 18.0;
MARKETING_VERSION = 0.0;
PRODUCT_BUNDLE_IDENTIFIER = blastsoftstudios.djangofilesTests;
PRODUCT_NAME = "$(TARGET_NAME)";
Expand All @@ -658,7 +672,7 @@
CURRENT_PROJECT_VERSION = 0;
DEVELOPMENT_TEAM = ZY6BPTGK47;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 18.2;
IPHONEOS_DEPLOYMENT_TARGET = 18.0;
MARKETING_VERSION = 0.0;
PRODUCT_BUNDLE_IDENTIFIER = blastsoftstudios.djangofilesTests;
PRODUCT_NAME = "$(TARGET_NAME)";
Expand Down Expand Up @@ -848,6 +862,22 @@
minimumVersion = 2.226.0;
};
};
A21CC8832DEB950C00EF776C /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/firebase/firebase-ios-sdk";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 11.13.0;
};
};
A2DF11D32DDA12CA0096E7C4 /* XCRemoteSwiftPackageReference "highlightswift" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/appstefan/highlightswift";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 1.0.9;
};
};
/* End XCRemoteSwiftPackageReference section */

/* Begin XCSwiftPackageProductDependency section */
Expand All @@ -871,6 +901,21 @@
package = 4C82CB4F2D62372200C0893B /* XCRemoteSwiftPackageReference "swift-http-types" */;
productName = HTTPTypesFoundation;
};
A21CC8842DEB967300EF776C /* FirebaseAnalytics */ = {
isa = XCSwiftPackageProductDependency;
package = A21CC8832DEB950C00EF776C /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */;
productName = FirebaseAnalytics;
};
A21CC88A2DEB991100EF776C /* FirebaseCrashlytics */ = {
isa = XCSwiftPackageProductDependency;
package = A21CC8832DEB950C00EF776C /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */;
productName = FirebaseCrashlytics;
};
A2DF11D42DDA13FE0096E7C4 /* HighlightSwift */ = {
isa = XCSwiftPackageProductDependency;
package = A2DF11D32DDA12CA0096E7C4 /* XCRemoteSwiftPackageReference "highlightswift" */;
productName = HighlightSwift;
};
/* End XCSwiftPackageProductDependency section */
};
rootObject = 4C5E20E42D603C3B009EE83A /* Project object */;
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading