Moved all the Profile UI files into their own Profile module.

This commit is contained in:
Javier Cicchelli 2022-12-03 11:37:42 +01:00
parent e24d3e115c
commit 330d790394
7 changed files with 133 additions and 45 deletions

View File

@ -14,8 +14,6 @@
02AE650029363DC1005A4AF3 /* BeRealTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02AE64FF29363DC1005A4AF3 /* BeRealTests.swift */; }; 02AE650029363DC1005A4AF3 /* BeRealTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02AE64FF29363DC1005A4AF3 /* BeRealTests.swift */; };
02AE650A29363DC1005A4AF3 /* BeRealUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02AE650929363DC1005A4AF3 /* BeRealUITests.swift */; }; 02AE650A29363DC1005A4AF3 /* BeRealUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02AE650929363DC1005A4AF3 /* BeRealUITests.swift */; };
02AE650C29363DC1005A4AF3 /* BeRealUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02AE650B29363DC1005A4AF3 /* BeRealUITestsLaunchTests.swift */; }; 02AE650C29363DC1005A4AF3 /* BeRealUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02AE650B29363DC1005A4AF3 /* BeRealUITestsLaunchTests.swift */; };
02CE5562293B452E00730DC9 /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02CE5561293B452E00730DC9 /* ProfileView.swift */; };
02CE5565293B517700730DC9 /* NameAndValueLabelStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02CE5564293B517700730DC9 /* NameAndValueLabelStyle.swift */; };
02FFFD7B29395DD200306533 /* String+Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02FFFD7A29395DD200306533 /* String+Constants.swift */; }; 02FFFD7B29395DD200306533 /* String+Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02FFFD7A29395DD200306533 /* String+Constants.swift */; };
4694AAA0293A7C8800D54903 /* Modules in Frameworks */ = {isa = PBXBuildFile; productRef = 4694AA9F293A7C8800D54903 /* Modules */; }; 4694AAA0293A7C8800D54903 /* Modules in Frameworks */ = {isa = PBXBuildFile; productRef = 4694AA9F293A7C8800D54903 /* Modules */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
@ -49,8 +47,6 @@
02AE650529363DC1005A4AF3 /* BeRealUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = BeRealUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 02AE650529363DC1005A4AF3 /* BeRealUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = BeRealUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
02AE650929363DC1005A4AF3 /* BeRealUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BeRealUITests.swift; sourceTree = "<group>"; }; 02AE650929363DC1005A4AF3 /* BeRealUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BeRealUITests.swift; sourceTree = "<group>"; };
02AE650B29363DC1005A4AF3 /* BeRealUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BeRealUITestsLaunchTests.swift; sourceTree = "<group>"; }; 02AE650B29363DC1005A4AF3 /* BeRealUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BeRealUITestsLaunchTests.swift; sourceTree = "<group>"; };
02CE5561293B452E00730DC9 /* ProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = "<group>"; };
02CE5564293B517700730DC9 /* NameAndValueLabelStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NameAndValueLabelStyle.swift; sourceTree = "<group>"; };
02FFFD7A29395DD200306533 /* String+Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Constants.swift"; sourceTree = "<group>"; }; 02FFFD7A29395DD200306533 /* String+Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Constants.swift"; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
@ -147,27 +143,9 @@
path = Profile; path = Profile;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
02CE5560293B452400730DC9 /* Views */ = {
isa = PBXGroup;
children = (
02CE5561293B452E00730DC9 /* ProfileView.swift */,
);
path = Views;
sourceTree = "<group>";
};
02CE5563293B516600730DC9 /* Styles */ = {
isa = PBXGroup;
children = (
02CE5564293B517700730DC9 /* NameAndValueLabelStyle.swift */,
);
path = Styles;
sourceTree = "<group>";
};
02FFFD7929395DBF00306533 /* Extensions */ = { 02FFFD7929395DBF00306533 /* Extensions */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
02CE5563293B516600730DC9 /* Styles */,
02CE5560293B452400730DC9 /* Views */,
02FFFD7A29395DD200306533 /* String+Constants.swift */, 02FFFD7A29395DD200306533 /* String+Constants.swift */,
); );
path = Extensions; path = Extensions;
@ -314,10 +292,8 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
02CE5562293B452E00730DC9 /* ProfileView.swift in Sources */,
02AE64F129363DBF005A4AF3 /* ContentView.swift in Sources */, 02AE64F129363DBF005A4AF3 /* ContentView.swift in Sources */,
02AE64EF29363DBF005A4AF3 /* BeRealApp.swift in Sources */, 02AE64EF29363DBF005A4AF3 /* BeRealApp.swift in Sources */,
02CE5565293B517700730DC9 /* NameAndValueLabelStyle.swift in Sources */,
02FFFD7B29395DD200306533 /* String+Constants.swift in Sources */, 02FFFD7B29395DD200306533 /* String+Constants.swift in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;

View File

@ -9,6 +9,7 @@
import SwiftUI import SwiftUI
import Browse import Browse
import Login import Login
import Profile
struct ContentView: View { struct ContentView: View {
var body: some View { var body: some View {
@ -16,7 +17,7 @@ struct ContentView: View {
BrowseView() BrowseView()
} }
.sheet(isPresented: .constant(true)) { .sheet(isPresented: .constant(true)) {
LoginView() ProfileView()
} }
} }
} }

View File

@ -13,7 +13,8 @@ let package = Package(
name: "Modules", name: "Modules",
targets: [ targets: [
"Login", "Login",
"Browse" "Browse",
"Profile"
] ]
), ),
], ],
@ -25,6 +26,10 @@ let package = Package(
.target( .target(
name: "Browse", name: "Browse",
resources: [.process("Resources")] resources: [.process("Resources")]
),
.target(
name: "Profile",
resources: [.process("Resources")]
) )
] ]
) )

View File

@ -0,0 +1,19 @@
/*
Localizable.strings
Profile
Created by Javier Cicchelli on 03/12/2022.
Copyright © 2022 Röck+Cöde. All rights reserved.
*/
"profile.sections.names.header.text" = "Names";
"profile.sections.names.label.first_name.text" = "First name";
"profile.sections.names.label.last_name.text" = "Last name";
"profile.sections.root_info.header.text" = "Root item information";
"profile.sections.root_info.label.identifier.text" = "Identifier";
"profile.sections.root_info.label.is_directory.text" = "Is a directory?";
"profile.sections.root_info.label.last_modified.text" = "Last modified";
"profile.sections.root_info.label.name.text" = "Name";
"profile.button.log_out.text" = "Log out";

View File

@ -0,0 +1,48 @@
//
// ClearBackgroundList.swift
// Profile
//
// Created by Javier Cicchelli on 03/12/2022.
// Copyright © 2022 Röck+Cöde. All rights reserved.
//
import SwiftUI
struct ClearBackgroundList<Content>: View where Content: View {
// MARK: Properties
@ViewBuilder let content: Content
// MARK: Body
var body: some View {
if #available(iOS 16.0, *) {
List{
content
}
.scrollContentBackground(.hidden)
.scrollIndicators(.hidden)
} else {
List {
content
}
.onAppear {
UITableView.appearance().backgroundColor = .clear
UITableView.appearance().showsVerticalScrollIndicator = false
}
}
}
}
// MARK: - Previews
struct ClearBackgroundList_Previews: PreviewProvider {
static var previews: some View {
ClearBackgroundList {
Text("Something...")
}
.background(Color.red)
}
}

View File

@ -8,9 +8,16 @@
import SwiftUI import SwiftUI
struct ProfileView: View { public struct ProfileView: View {
var body: some View {
List { // MARK: Initialisers
public init() {}
// MARK: Body
public var body: some View {
ClearBackgroundList {
Section { Section {
Image.photo Image.photo
.resizable() .resizable()
@ -24,73 +31,105 @@ struct ProfileView: View {
Label { Label {
Text("Javier") Text("Javier")
} icon: { } icon: {
Text("First name") Text(
"profile.sections.names.label.first_name.text",
bundle: .module,
comment: "First name label text."
)
} }
.labelStyle(.nameAndValue) .labelStyle(.nameAndValue)
Label { Label {
Text("Cicchelli") Text("Cicchelli")
} icon: { } icon: {
Text("Last name") Text(
"profile.sections.names.label.last_name.text",
bundle: .module,
comment: "Last name label text."
)
} }
.labelStyle(.nameAndValue) .labelStyle(.nameAndValue)
} header: { } header: {
Text("Names") Text(
"profile.sections.names.header.text",
bundle: .module,
comment: "Names section header text."
)
} }
Section { Section {
Label { Label {
Text("71207ee4c0573fde80b03643caafe62731406404") Text("71207ee4c0573fde80b03643caafe62731406404")
} icon: { } icon: {
Text("Identifier") Text(
"profile.sections.root_info.label.identifier.text",
bundle: .module,
comment: "Identifier label text."
)
} }
.labelStyle(.nameAndValue) .labelStyle(.nameAndValue)
Label { Label {
Text("Yes") Text("Yes")
} icon: { } icon: {
Text("Is a directory?") Text(
"profile.sections.root_info.label.is_directory.text",
bundle: .module,
comment: "Is directory label text."
)
} }
.labelStyle(.nameAndValue) .labelStyle(.nameAndValue)
Label { Label {
Text("3 days ago") Text("3 days ago")
} icon: { } icon: {
Text("Last modified") Text(
"profile.sections.root_info.label.last_modified.text",
bundle: .module,
comment: "Last modified label text."
)
} }
.labelStyle(.nameAndValue) .labelStyle(.nameAndValue)
Label { Label {
Text("My files") Text("My files")
} icon: { } icon: {
Text("name") Text(
"profile.sections.root_info.label.name.text",
bundle: .module,
comment: "Root name label text."
)
} }
.labelStyle(.nameAndValue) .labelStyle(.nameAndValue)
} header: { } header: {
Text("Root item information") Text(
"profile.sections.root_info.header.text",
bundle: .module,
comment: "Root item information header text."
)
} }
Section { Section {
Button { Button {
// TODO: Log out the existing user. // TODO: Log out the existing user.
} label: { } label: {
Text("Log out") Text(
.fontWeight(.semibold) "profile.button.log_out.text",
.foregroundColor(.primary) bundle: .module,
.frame(maxWidth: .infinity) comment: "Log out button text."
)
.fontWeight(.semibold)
.foregroundColor(.primary)
.frame(maxWidth: .infinity)
} }
.tint(.orange) .tint(.orange)
.buttonStyle(.borderedProminent) .buttonStyle(.borderedProminent)
.buttonBorderShape(.roundedRectangle(radius: 8)) .buttonBorderShape(.roundedRectangle(radius: 8))
.controlSize(.large) .controlSize(.large)
.padding(0)
} }
.listRowBackground(Color.clear) .listRowBackground(Color.clear)
} }
.background(Color.red) .background(Color.red)
.onAppear {
UITableView.appearance().backgroundColor = .clear
}
} }
} }