Skip to content

Commit

Permalink
General: Release (#76)
Browse files Browse the repository at this point in the history
* Do not retain self

ConversationViewModel did not deinitialize

* Subscribe to new topics

* Apply suggestions from code review

Co-authored-by: Tarlan Ismayilsoy <[email protected]>

* Correct indentation

* Correct indentation again

* Correct indentation (this time it should be fine)

* Cherry-pick exercises/align-list-row

* Add Report Post button

* Local Core Modules

* Revert "Add Report Post button"

This reverts commit c3d2fdd.

* Prototype

* Revert "Prototype"

This reverts commit 39c7972.

* Prototype

* On review

* Add code of conduct to messages service

* Update Swift tools version, platforms, and minimum deployment

* Fix Starscream and warnings:

- 'onChange(of:perform:)' was deprecated in iOS 17.0: Use `onChange` with a two or zero parameter action closure instead.
- Vertical Whitespace before Closing Braces Violation: Don't include vertical whitespace (empty line) before closing braces (vertical_whitespace_closing_braces)
- Trailing Whitespace Violation: Lines should not have trailing whitespace (trailing_whitespace)
- no rule to process file '…/artemis-ios/readme.md' of type 'net.daringfireball.markdown' for architecture 'arm64'

* Update to recommended settings:

- Asset Catalog: Enable Generated Asset Symbol Extensions
- Build Settings: Enable User Script Sandboxing
- Project Settings: Enable Parallelization in Command Line Builds using '-target'

* ENABLE_USER_SCRIPT_SANDBOXING = NO;

warning: The file “.swiftlint.yml” couldn’t be opened because you don’t have permission to view it. – Falling back to default configuration

* Revert "Local Core Modules"

This reverts commit cb8100a.

* Update core module ≥ 3.5.0

* Update messages service

* Add `ResponsibleUserDTO`

* Create CodeOfConductView

* Center enrollment button

* Format code

* Update core module to 4.0.0

* Resolve latest package versions

* Supplement

* Fix warnings:

- Empty XCTest Method Violation: Empty XCTest method should be avoided (empty_xctest_method)
- Attributes Violation: Attributes should be on their own lines in functions and types, but on the same line as variables and imports (attributes)

* Fix warnings:

- Trailing Whitespace Violation: Lines should not have trailing whitespace (trailing_whitespace)
- 'onChange(of:perform:)' was deprecated in iOS 17.0: Use `onChange` with a two or zero parameter action closure instead.
- Attributes Violation: Attributes should be on their own lines in functions and types, but on the same line as variables and imports (attributes)

* Add ContentUnavailableView

* Fix warning:

- File Length Violation: File should contain 400 lines or less: currently contains 428 (file_length)

* Not searchable if agreement is false

* Fitler HTML comments

* Create MessagesPreferences

* Add navigation title, fix grammar

* Prefer labeled trailing closures

* Create some service

* On review

* Add getCodeOfConductTemplate

* Wrap MessagesAvailableView

* Move getCodeOfConductTemplate

* Extract CodeOfConductService

* Organize CodeOfConductStorageService

* Hash code of conduct template

* Shorten method names

* On review

* On review

* On review

* Replace Hashable.hashValue with SHA256 digest

> Hash values are not guaranteed to be equal across different executions of your program

* Create CodeOfConductViewModel

* On review

* Handle errors

* Fix cancellation error on view re-computation

* Fix markdown heading not leading

* Fix progress view not centered

* Init courseCodeOfConduct

* Replace legacy test servers

* Remove trailing slash

* Update core module

* Supplement b957dae

* add exercise details list

* resolve issues

* Adapt to:

ls1intum/Artemis#7437

* Init Artemiskit

* Add reference

* Move Navigation

* Move Messages

* Move Notifications

* Move CourseRegestration

* Move CourseView

* Move Dashboard

* Delete legacy

* Move dependencies

* Move app sources

* Reference auxiliary files

* Rename docu/

* Fix warnings:

- 'applicationIconBadgeNumber' was deprecated in iOS 17.0: Use -[UNUserNotificationCenter setBadgeCount:withCompletionHandler:] instead.
- empty_xctest_method
- trailing_comma

* package.resolved

* Implement exercise submission service

* Update Package.resolved

* update dependencies

* add apollon-ios-module package dependency

* Fastfile update

* remove xcode_select

* Preview

* Add SwiftLint dependency

* Use LazyVGrid

* Rename CoursesOverview*

* Move CourseCollectionView

* Iterate

* Remove range

* Remove project dependency

* On review

* Adjust API

* On review

* On review

* On review

* Fix transient dependency

* Prototype

* Update SwiftLint to 0.54.0

* Skip macro validation

* Prototype no messages

* Prototype no notifications

* Prototype no lectures

* Center no notifications

* Refine no messages

* Refine no messages

* Fix apollon

* Format ConversationView

* Revert "Prototype no lectures"

This reverts commit c897b15.

* Refine no notifications and format

* Extract NotificationToolbar

* Move files

* Replace NavigationView: deprecated

* Display navigation bar title inline

* Format

* On review

* On review

* Format

* Naming

* On review

* wip

* Refine padding

* On review

* On review

* Get CoursesForDashboard

* Branch: feature/general/dashboard-performance

* Remove project dependencies; update core

* Supplement f10cd65

* Pin Starscream to 4.0.4

* Supplement 2884d5b

* Format

* Sort by start date:

https://github.com/ls1intum/Artemis/blob/af9a52b41cbf5d8a857b304dcf5ad261c6e757e5/src/main/webapp/app/overview/course-lectures/course-lectures.component.ts#L172

* Format

* Localization

* Fix topics

* `Modeling exercises`: Modeling exercises implementation (#55)

* Add "Start Exercise" Button

* Fetching exercise data from Artemis

* create start participation button

* update from develop

* add problem statement view

* Open modeling editor

* StartExerciseButton

* update ModelingExerciseView

* View modeling exercise submission and result

* Update Packed.resolved

* update to newest apollon-ios version

* Update Core Modules dependency

* Update Apollon-iOS-Module revision

* initial review changes

* further review changes

* Remove whitespace

---------

Co-authored-by: Nityananda Zbil <[email protected]>

* Guard message corresponds to conversation

* Unwrap id

* Use module bundle

* Format

* Avoid singletons

* Supplement 6d75eef

* Use Observation

* Revert "Use Observation"

This reverts commit 5e8d1ef.

* `Modeling exercises`: Add feedback and results view for modeling exercises (#61)

* Add "Start Exercise" Button

* Fetching exercise data from Artemis

* create start participation button

* update from develop

* add problem statement view

* Open modeling editor

* StartExerciseButton

* update ModelingExerciseView

* View modeling exercise submission and result

* Update Packed.resolved

* Added logic and UI for viewing feedback

* update to newest apollon-ios version

* update to new apollon-ios version

* UI improvements for feedback and assessment

* Update apollon-ios-module dependency

* refactor code

* remove feature folder

* Change Apollon-iOS-Module dependency to version "1.0.0"

* update Apollon-iOS-Module dependency

* changes after review

* `Communication`: Adapt WebSocket messages (#75)

* Fix topic

* Rename MetisPostAction: MetisCrudAction

ls1intum/Artemis@27cd964

* Add notification field

* Unite WebSocket topics

* `Notifications`: Add muting notifications for conversations (#51)

* Add mute/unmute

* Treat file length

* English default localization

* Update to latest package versions

---------

Co-authored-by: Tarlan Ismayilsoy <[email protected]>
Co-authored-by: Alexander Görtzen <[email protected]>
  • Loading branch information
3 people authored Feb 14, 2024
1 parent a6e0917 commit c6738b5
Show file tree
Hide file tree
Showing 200 changed files with 3,590 additions and 2,001 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ build/
*.perspectivev3
*.xccheckout
xcuserdata/
iosApp.xcworkspace/xcuserdata
Artemis.xcworkspace/xcuserdata
5 changes: 2 additions & 3 deletions .swiftlint.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
included:
- iosApp
- core
- feature
- Artemis
- ArtemisKit
excluded:
- Tests/SwiftLintFrameworkTests/Resources
analyzer_rules:
Expand Down
36 changes: 18 additions & 18 deletions Artemis.entitlements
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,24 @@
<string>development</string>
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:artemis.in.tum.de</string>
<string>applinks:artemis.ase.in.tum.de</string>
<string>applinks:artemis-test1.artemis.in.tum.de</string>
<string>applinks:artemis-test2.artemis.in.tum.de</string>
<string>applinks:artemis-staging.artemis.in.tum.de/</string>
<string>applinks:artemis-test3.artemis.in.tum.de</string>
<string>applinks:artemis-test5.artemis.in.tum.de</string>
<string>applinks:artemis-test6.artemis.in.tum.de</string>
<string>applinks:artemis-test10.artemis.in.tum.de</string>
<string>webcredentials:artemis.in.tum.de</string>
<string>webcredentials:artemis.ase.in.tum.de</string>
<string>webcredentials:artemis-test1.artemis.in.tum.de</string>
<string>webcredentials:artemis-test2.artemis.in.tum.de</string>
<string>webcredentials:artemis-staging.artemis.in.tum.de/</string>
<string>webcredentials:artemis-test3.artemis.in.tum.de</string>
<string>webcredentials:artemis-test5.artemis.in.tum.de</string>
<string>webcredentials:artemis-test6.artemis.in.tum.de</string>
<string>webcredentials:artemis-test10.artemis.in.tum.de</string>
<string>applinks:artemis.cit.tum.de</string>
<string>applinks:artemis-staging.artemis.cit.tum.de</string>
<string>applinks:artemis-test1.artemis.cit.tum.de</string>
<string>applinks:artemis-test2.artemis.cit.tum.de</string>
<string>applinks:artemis-test3.artemis.cit.tum.de</string>
<string>applinks:artemis-test4.artemis.cit.tum.de</string>
<string>applinks:artemis-test5.artemis.cit.tum.de</string>
<string>applinks:artemis-test6.artemis.cit.tum.de</string>
<string>applinks:artemis-test9.artemis.cit.tum.de</string>
<string>webcredentials:artemis.cit.tum.de</string>
<string>webcredentials:artemis-staging.artemis.cit.tum.de</string>
<string>webcredentials:artemis-test1.artemis.cit.tum.de</string>
<string>webcredentials:artemis-test2.artemis.cit.tum.de</string>
<string>webcredentials:artemis-test3.artemis.cit.tum.de</string>
<string>webcredentials:artemis-test4.artemis.cit.tum.de</string>
<string>webcredentials:artemis-test5.artemis.cit.tum.de</string>
<string>webcredentials:artemis-test6.artemis.cit.tum.de</string>
<string>webcredentials:artemis-test9.artemis.cit.tum.de</string>
</array>
</dict>
</plist>
252 changes: 44 additions & 208 deletions Artemis.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,12 +1,21 @@
{
"pins" : [
{
"identity" : "apollon-ios-module",
"kind" : "remoteSourceControl",
"location" : "https://github.com/ls1intum/apollon-ios-module",
"state" : {
"revision" : "1690e711415330b28e836cd8035e1805c0a4e479",
"version" : "1.0.2"
}
},
{
"identity" : "artemis-ios-core-modules",
"kind" : "remoteSourceControl",
"location" : "https://github.com/ls1intum/artemis-ios-core-modules",
"state" : {
"revision" : "aa5eacbcfcb432f4fffd616d129aed6d8e984cf3",
"version" : "2.3.8"
"revision" : "b5b5a7282691d27ea121aadc08b89369f3c8d566",
"version" : "9.0.0"
}
},
{
Expand All @@ -23,8 +32,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/krzyzanowskim/CryptoSwift.git",
"state" : {
"revision" : "32f641cf24fc7abc1c591a2025e9f2f572648b0f",
"version" : "1.7.2"
"revision" : "7892a123f7e8d0fe62f9f03728b17bbd4f94df5c",
"version" : "1.8.1"
}
},
{
Expand All @@ -41,17 +50,26 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/onevcat/Kingfisher.git",
"state" : {
"revision" : "c1f60c63f356d364f4284ba82961acbe7de79bcc",
"version" : "7.8.1"
"revision" : "3ec0ab0bca4feb56e8b33e289c9496e89059dd08",
"version" : "7.10.2"
}
},
{
"identity" : "networkimage",
"kind" : "remoteSourceControl",
"location" : "https://github.com/gonzalezreal/NetworkImage",
"state" : {
"revision" : "7aff8d1b31148d32c5933d75557d42f6323ee3d1",
"version" : "6.0.0"
}
},
{
"identity" : "r.swift",
"kind" : "remoteSourceControl",
"location" : "https://github.com/mac-cain13/R.swift.git",
"state" : {
"revision" : "0e4ec17f329136b712d0a96128597b8ff2f31bdc",
"version" : "7.3.2"
"revision" : "384eab88d1a0b98ac96f4819e50a4308ecd5359f",
"version" : "7.5.0"
}
},
{
Expand Down Expand Up @@ -93,37 +111,37 @@
{
"identity" : "swift-argument-parser",
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-argument-parser",
"location" : "https://github.com/apple/swift-argument-parser.git",
"state" : {
"revision" : "fee6933f37fde9a5e12a1e4aeaa93fe60116ff2a",
"version" : "1.2.2"
"revision" : "8f4d2753f0e4778c76d5f05ad16c74f707390531",
"version" : "1.2.3"
}
},
{
"identity" : "swift-markdown-ui",
"kind" : "remoteSourceControl",
"location" : "https://github.com/gonzalezreal/swift-markdown-ui",
"state" : {
"revision" : "12b351a75201a8124c2f2e1f9fc6ef5cd812c0b9",
"version" : "2.1.0"
"revision" : "ae799d015a5374708f7b4c85f3294c05f2a564e2",
"version" : "2.3.0"
}
},
{
"identity" : "swift-syntax",
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-syntax.git",
"state" : {
"revision" : "59ed009d2c4a5a6b78f75a25679b6417ac040dcf",
"version" : "509.0.0-swift-DEVELOPMENT-SNAPSHOT-2023-07-04-a"
"revision" : "6ad4ea24b01559dde0773e3d091f1b9e36175036",
"version" : "509.0.2"
}
},
{
"identity" : "swiftlint",
"kind" : "remoteSourceControl",
"location" : "https://github.com/realm/SwiftLint.git",
"state" : {
"revision" : "9eaecbedce469a51bd8487effbd4ab46ec8384ae",
"version" : "0.52.4"
"revision" : "f17a4f9dfb6a6afb0408426354e4180daaf49cee",
"version" : "0.54.0"
}
},
{
Expand Down Expand Up @@ -167,8 +185,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/tomlokhorst/XcodeEdit",
"state" : {
"revision" : "cd466d6e8c5ffd2f2b61165d37b0646f09068e1e",
"version" : "2.9.0"
"revision" : "b6b67389a0f1a6fdd9c6457a8ab5b02eaab13c5c",
"version" : "2.9.2"
}
},
{
Expand Down
2 changes: 1 addition & 1 deletion Artemis.xcodeproj/xcshareddata/xcschemes/Artemis.xcscheme
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1420"
LastUpgradeVersion = "1500"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
Expand Down
9 changes: 5 additions & 4 deletions iosApp/iOSApp.swift → Artemis/ArtemisApp.swift
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
import ArtemisKit
import SwiftUI
import Navigation

@main
struct ArtemisApp: App {

@UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
@UIApplicationDelegateAdaptor(AppDelegate.self)
private var delegate: AppDelegate

@Environment(\.scenePhase) private var scenePhase

var body: some Scene {
WindowGroup {
RootView()
.onChange(of: scenePhase) { phase in
if phase == .background {
.onChange(of: scenePhase) { _, newPhase in
if newPhase == .background {
delegate.applicationDidEnterBackground(UIApplication.shared)
}
}
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
5 changes: 3 additions & 2 deletions core/Navigation/.gitignore → ArtemisKit/.gitignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
.DS_Store
/.build
/Packages
/*.xcodeproj
xcuserdata/
DerivedData/
.swiftpm/config/registries.json
.swiftpm/configuration/registries.json
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
.netrc

Package.resolved
130 changes: 130 additions & 0 deletions ArtemisKit/Package.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
// swift-tools-version: 5.9
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
name: "ArtemisKit",
defaultLocalization: "en",
platforms: [
.iOS(.v17)
],
products: [
// Products define the executables and libraries a package produces, making them visible to other packages.
.library(
name: "ArtemisKit",
targets: [
"ArtemisKit"
])
],
dependencies: [
// Starscream 4.0.6 does not build
.package(url: "https://github.com/daltoniam/Starscream.git", exact: "4.0.4"),
.package(url: "https://github.com/Kelvas09/EmojiPicker.git", from: "1.0.0"),
.package(url: "https://github.com/ls1intum/apollon-ios-module", .upToNextMajor(from: "1.0.2")),
.package(url: "https://github.com/ls1intum/artemis-ios-core-modules", .upToNextMajor(from: "9.0.0")),
.package(url: "https://github.com/mac-cain13/R.swift.git", from: "7.0.0")
],
targets: [
// Targets are the basic building blocks of a package, defining a module or a test suite.
// Targets can depend on other targets in this package and products from dependencies.
.target(
name: "ArtemisKit",
dependencies: [
"CourseRegistration",
"CourseView",
"Dashboard",
"Messages",
"Navigation",
"Notifications",
.product(name: "Login", package: "artemis-ios-core-modules")
]),
.target(
name: "CourseRegistration",
dependencies: [
.product(name: "APIClient", package: "artemis-ios-core-modules"),
.product(name: "DesignLibrary", package: "artemis-ios-core-modules"),
.product(name: "SharedModels", package: "artemis-ios-core-modules"),
.product(name: "RswiftLibrary", package: "R.swift")
],
plugins: [
.plugin(name: "RswiftGeneratePublicResources", package: "R.swift")
]),
.target(
name: "CourseView",
dependencies: [
"Messages",
"Navigation",
.product(name: "ApollonEdit", package: "apollon-ios-module"),
.product(name: "ApollonView", package: "apollon-ios-module"),
.product(name: "ApollonShared", package: "apollon-ios-module"),
.product(name: "APIClient", package: "artemis-ios-core-modules"),
.product(name: "ArtemisMarkdown", package: "artemis-ios-core-modules"),
.product(name: "Common", package: "artemis-ios-core-modules"),
.product(name: "SharedModels", package: "artemis-ios-core-modules"),
.product(name: "SharedServices", package: "artemis-ios-core-modules"),
.product(name: "UserStore", package: "artemis-ios-core-modules"),
.product(name: "RswiftLibrary", package: "R.swift")
],
plugins: [
.plugin(name: "RswiftGeneratePublicResources", package: "R.swift")
]),
.target(
name: "Dashboard",
dependencies: [
"CourseRegistration",
"CourseView",
"Navigation",
"Notifications",
.product(name: "Account", package: "artemis-ios-core-modules"),
.product(name: "APIClient", package: "artemis-ios-core-modules"),
.product(name: "DesignLibrary", package: "artemis-ios-core-modules"),
.product(name: "SharedModels", package: "artemis-ios-core-modules"),
.product(name: "SharedServices", package: "artemis-ios-core-modules"),
.product(name: "RswiftLibrary", package: "R.swift")
],
plugins: [
.plugin(name: "RswiftGeneratePublicResources", package: "R.swift")
]),
.target(
name: "Messages",
dependencies: [
"EmojiPicker",
"Navigation",
.product(name: "APIClient", package: "artemis-ios-core-modules"),
.product(name: "ArtemisMarkdown", package: "artemis-ios-core-modules"),
.product(name: "DesignLibrary", package: "artemis-ios-core-modules"),
.product(name: "SharedModels", package: "artemis-ios-core-modules"),
.product(name: "SharedServices", package: "artemis-ios-core-modules"),
.product(name: "UserStore", package: "artemis-ios-core-modules"),
.product(name: "RswiftLibrary", package: "R.swift")
],
plugins: [
.plugin(name: "RswiftGeneratePublicResources", package: "R.swift")
]),
.target(
name: "Navigation",
dependencies: [
.product(name: "Common", package: "artemis-ios-core-modules"),
.product(name: "SharedModels", package: "artemis-ios-core-modules"),
.product(name: "UserStore", package: "artemis-ios-core-modules")
]),
.target(
name: "Notifications",
dependencies: [
"Navigation",
.product(name: "APIClient", package: "artemis-ios-core-modules"),
.product(name: "DesignLibrary", package: "artemis-ios-core-modules"),
.product(name: "SharedModels", package: "artemis-ios-core-modules"),
.product(name: "PushNotifications", package: "artemis-ios-core-modules"),
.product(name: "UserStore", package: "artemis-ios-core-modules"),
.product(name: "RswiftLibrary", package: "R.swift")
],
plugins: [
.plugin(name: "RswiftGeneratePublicResources", package: "R.swift")
]),
.testTarget(
name: "ArtemisKitTests",
dependencies: [])
]
)
Loading

0 comments on commit c6738b5

Please sign in to comment.