Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
eb07dab
Add snapshot postfix to v4.73.0
laevandus Feb 28, 2025
40026ea
Upload photos from the library as JPEG instead of HEIC (#767)
nuno-vieira Mar 3, 2025
b287254
Fix video assets not showing in composer (#768)
nuno-vieira Mar 3, 2025
f08b5fc
Styled markdown with AttributedString (#757)
laevandus Mar 4, 2025
5a6bc4c
Add `resignsFirstResponderOnScrollDown` to `MessageListConfig` (#769)
sovata8 Mar 5, 2025
3621c63
Fix the ordering of CHANGELOG entries
laevandus Mar 5, 2025
83eff39
[CI] Bump Xcode, macOS and iOS versions (#771)
testableapple Mar 5, 2025
be8f208
Bump rack from 3.1.10 to 3.1.11 (#773)
dependabot[bot] Mar 6, 2025
ac7fd36
Customizing the message avatar view is reflected in all views that us…
martinmitrevski Mar 6, 2025
d377b30
Move changeBarsVisibility logic into ViewFactory for better customiza…
sheep-q Mar 5, 2025
03a8a7d
update func name follow the naming pattern
sheep-q Mar 6, 2025
25775f3
Merge pull request #774 from sheep-q/chat/change_bar_visibility
laevandus Mar 11, 2025
dedcf2f
Make sendMessage in MessageComposerViewModel open (#779)
martinmitrevski Mar 11, 2025
89fa74d
Use the same template as the UIKit repository (#782)
laevandus Mar 12, 2025
fd48ffb
Bump rack from 3.1.11 to 3.1.12 (#780)
dependabot[bot] Mar 12, 2025
9e49e0f
Show translated text for participant messages (#776)
laevandus Mar 13, 2025
e6e2fc0
Show typing suggestions for text with whitespace (mentions with full …
laevandus Mar 13, 2025
c39414a
[CI] Downgrade Xcode version for E2E tests (#783)
testableapple Mar 13, 2025
4b98069
Update StreamChat dependency to 4.74.0 (#784)
testableapple Mar 14, 2025
99a74f2
Bump 4.74.0
Mar 14, 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
29 changes: 20 additions & 9 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,36 @@
### 🔗 Issue Link
_Jira or Github issue link, if applicable._
### 🔗 Issue Links

_Provide all Linear and/or Github issues related to this PR, if applicable._

### 🎯 Goal

_Describe why we are making this change._

### 📝 Summary

_Provide bullet points with the most important changes in the codebase._

### 🛠 Implementation

_Provide a description of the implementation._
_Provide a detailed description of the implementation and explain your decisions if you find them relevant._

### 🎨 Showcase

### 🧪 Testing
_Add relevant screenshots and/or videos/gifs to easily see what this PR changes, if applicable._

_Describe the steps how this change can be tested (or why it can't be tested)._
| Before | After |
| ------ | ----- |
| img | img |

### 🎨 Changes
### 🧪 Manual Testing Notes

_Add relevant screenshots or videos showcasing the changes._
_Explain how this change can be tested manually, if applicable._

### ☑️ Checklist
### ☑️ Contributor Checklist

- [ ] I have signed the [Stream CLA](https://docs.google.com/forms/d/e/1FAIpQLScFKsKkAJI7mhCr7K9rEIOpqIDThrWxuvxnwUq2XkHyG154vQ/viewform) (required)
- [x] This change should be manually QAed
- [ ] Changelog is updated with client-facing changes
- [ ] Changelog is updated with new localization keys
- [ ] New code is covered by unit tests
- [ ] Affected documentation updated (docusaurus, tutorial, CMS (task created)
- [ ] Documentation has been updated in the `docs-content` repo
7 changes: 3 additions & 4 deletions .github/workflows/cron-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ env:
jobs:
build-test-app-and-frameworks:
name: Build Test App and Frameworks
runs-on: macos-14
runs-on: macos-15
steps:
- uses: actions/[email protected]
- uses: ./.github/actions/ruby-cache
Expand All @@ -42,14 +42,14 @@ jobs:
matrix:
include:
- ios: 18.1
xcode: 16.1
xcode: 16.1 # fails on 16.2
os: macos-15
device: "iPhone 16 Pro"
setup_runtime: false
- ios: 17.5
xcode: 15.4
os: macos-15
device: "iPhone 14 Pro"
device: "iPhone 15 Pro"
setup_runtime: false
- ios: 16.4
xcode: 15.3 # fails on 15.4
Expand Down Expand Up @@ -131,7 +131,6 @@ jobs:
build-old-xcode:
name: Build SDKs (Xcode 15)
runs-on: macos-15
if: ${{ github.event_name != 'push' && github.event.inputs.snapshots != 'true' }}
env:
XCODE_VERSION: "15.4"
steps:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release-merge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:
jobs:
merge-comment:
name: Merge release to main
runs-on: macos-14
runs-on: macos-15
if: github.event_name == 'workflow_dispatch' || (github.event.issue.pull_request && github.event.issue.state == 'open' && github.event.comment.body == '/merge release')
steps:
- name: Connect Bot
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
jobs:
release:
name: Publish new release
runs-on: macos-13
runs-on: macos-15
steps:
- name: Connect Bot
uses: webfactory/[email protected]
Expand Down
1 change: 0 additions & 1 deletion .github/workflows/release-start.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,3 @@ jobs:
GITHUB_TOKEN: ${{ secrets.CI_BOT_GITHUB_TOKEN }}
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
APPSTORE_API_KEY: ${{ secrets.APPSTORE_API_KEY }}
XCODE_VERSION: "15.4"
2 changes: 1 addition & 1 deletion .github/workflows/sdk-size-metrics.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ env:
jobs:
sdk_size:
name: Metrics
runs-on: macos-14
runs-on: macos-15
env:
GITHUB_TOKEN: '${{ secrets.CI_BOT_GITHUB_TOKEN }}'
steps:
Expand Down
12 changes: 7 additions & 5 deletions .github/workflows/smoke-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ concurrency:

env:
HOMEBREW_NO_INSTALL_CLEANUP: 1 # Disable cleanup for homebrew, we don't need it on CI
IOS_SIMULATOR_DEVICE: "iPhone 16 Pro (18.1)"
IOS_SIMULATOR_DEVICE: "iPhone 16 Pro (18.2)"
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_PR_NUM: ${{ github.event.pull_request.number }}

Expand Down Expand Up @@ -64,7 +64,7 @@ jobs:
run: bundle exec fastlane pod_lint

build-xcode15:
name: Build SDKs (Xcode 15.0)
name: Build SDKs (Xcode 15)
runs-on: macos-15
if: ${{ github.event.inputs.record_snapshots != 'true' }}
env:
Expand Down Expand Up @@ -104,7 +104,7 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.CI_BOT_GITHUB_TOKEN }} # to open a PR
- name: Run Sonar analysis
if: ${{ github.event.inputs.snapshots != 'true' }}
if: ${{ github.event.inputs.record_snapshots != 'true' }}
run: bundle exec fastlane sonar_upload
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
Expand Down Expand Up @@ -133,7 +133,7 @@ jobs:

allure_testops_launch:
name: Launch Allure TestOps
runs-on: macos-13
runs-on: macos-15
if: ${{ github.event.inputs.record_snapshots != 'true' }}
needs: build-test-app-and-frameworks
outputs:
Expand All @@ -159,6 +159,8 @@ jobs:
- build-test-app-and-frameworks
env:
LAUNCH_ID: ${{ needs.allure_testops_launch.outputs.launch_id }}
XCODE_VERSION: "16.1" # fails on 16.2
IOS_SIMULATOR_DEVICE: "iPhone 16 Pro (18.1)"
strategy:
matrix:
batch: [0, 1]
Expand Down Expand Up @@ -207,7 +209,7 @@ jobs:

build-apps:
name: Build Demo App
runs-on: macos-14
runs-on: macos-15
if: ${{ github.event.inputs.record_snapshots != 'true' }}
needs: build-test-app-and-frameworks
steps:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/testflight.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ env:

jobs:
deploy:
runs-on: macos-14
runs-on: macos-15
steps:
- name: Connect Bot
uses: webfactory/[email protected]
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/update-copyright.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ env:
jobs:
copyright:
name: Copyright
runs-on: macos-13
runs-on: macos-15
steps:
- uses: actions/[email protected]
- uses: ./.github/actions/ruby-cache
Expand Down
18 changes: 18 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,24 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

### 🔄 Changed

# [4.74.0](https://github.com/GetStream/stream-chat-swiftui/releases/tag/4.74.0)
_March 14, 2025_

### ✅ Added
- Feature rich markdown rendering with AttributedString [#757](https://github.com/GetStream/stream-chat-swiftui/pull/757)
- Add `Fonts.title2` for supporting markdown headers [#757](https://github.com/GetStream/stream-chat-swiftui/pull/757)
- Add `resignsFirstResponderOnScrollDown` to `MessageListConfig` [#769](https://github.com/GetStream/stream-chat-swiftui/pull/769)
- Show auto-translated message translations ([learn more](https://getstream.io/chat/docs/ios-swift/translation/#enabling-automatic-translation)) [#776](https://github.com/GetStream/stream-chat-swiftui/pull/776)
### 🐞 Fixed
- Show typing suggestions for names containing whitespace [#781](https://github.com/GetStream/stream-chat-swiftui/pull/781)
### 🔄 Changed
- Uploading a HEIC photo from the library is now converted to JPEG for better compatibility [#767](https://github.com/GetStream/stream-chat-swiftui/pull/767)
- Customizing the message avatar view is reflected in all views that use it [#772](https://github.com/GetStream/stream-chat-swiftui/pull/772)
- Made the sendMessage method in MessageComposerViewModel open [#779](https://github.com/GetStream/stream-chat-swiftui/pull/779)
- Move `ChangeBarsVisibilityModifier` into `ViewFactory` for better customization [#774](https://github.com/GetStream/stream-chat-swiftui/pull/774)
### 🎭 New Localizations
- `message.translatedTo` [#776](https://github.com/GetStream/stream-chat-swiftui/pull/776)

# [4.73.0](https://github.com/GetStream/stream-chat-swiftui/releases/tag/4.73.0)
_February 28, 2025_

Expand Down
14 changes: 14 additions & 0 deletions DemoAppSwiftUI/AppConfiguration/AppConfiguration.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
//
// Copyright © 2025 Stream.io Inc. All rights reserved.
//

import Foundation
import StreamChat
import StreamChatSwiftUI

final class AppConfiguration {
static let `default` = AppConfiguration()

/// The translation language to set on connect.
var translationLanguage: TranslationLanguage?
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
//
// Copyright © 2025 Stream.io Inc. All rights reserved.
//

import StreamChat
import SwiftUI

struct AppConfigurationTranslationView: View {
@Environment(\.dismiss) var dismiss

var selection: Binding<TranslationLanguage?> = Binding {
AppConfiguration.default.translationLanguage
} set: { newValue in
AppConfiguration.default.translationLanguage = newValue
}

var body: some View {
List {
ForEach(TranslationLanguage.all, id: \.languageCode) { language in
Button(action: {
selection.wrappedValue = language
dismiss()
}) {
HStack {
Text(language.languageCode)
Spacer()
if selection.wrappedValue == language {
Image(systemName: "checkmark")
}
}
}
.foregroundStyle(.primary)
}
.navigationTitle("Translation Language")
}
}
}

extension TranslationLanguage {
static let all = allCases.sorted(by: { $0.languageCode < $1.languageCode })
}

#Preview {
NavigationView {
AppConfigurationTranslationView()
}
}
26 changes: 26 additions & 0 deletions DemoAppSwiftUI/AppConfiguration/AppConfigurationView.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
//
// Copyright © 2025 Stream.io Inc. All rights reserved.
//

import Combine
import SwiftUI

struct AppConfigurationView: View {
var body: some View {
NavigationView {
List {
Section("Connect User Configuration") {
NavigationLink("Translation") {
AppConfigurationTranslationView()
}
}
}
.navigationBarTitleDisplayMode(.inline)
.navigationTitle("App Configuration")
}
}
}

#Preview {
AppConfigurationView()
}
3 changes: 2 additions & 1 deletion DemoAppSwiftUI/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,8 @@ class AppDelegate: NSObject, UIApplicationDelegate {
userInfo: .init(
id: credentials.id,
name: credentials.name,
imageURL: credentials.avatarURL
imageURL: credentials.avatarURL,
language: AppConfiguration.default.translationLanguage
),
token: token
)
Expand Down
8 changes: 8 additions & 0 deletions DemoAppSwiftUI/LoginView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@ struct LoginView: View {
Text("Welcome to Stream Chat")
.font(.title)
.padding(.all, 8)

Button("Configuration") {
viewModel.showsConfiguration = true
}
.buttonStyle(.borderedProminent)

Text("Select a user to try the iOS SDK:")
.font(.body)
Expand All @@ -42,6 +47,9 @@ struct LoginView: View {
.overlay(
viewModel.loading ? ProgressView() : nil
)
.sheet(isPresented: $viewModel.showsConfiguration) {
AppConfigurationView()
}
}
}

Expand Down
8 changes: 7 additions & 1 deletion DemoAppSwiftUI/LoginViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ class LoginViewModel: ObservableObject {

@Published var demoUsers = UserCredentials.builtInUsers
@Published var loading = false
@Published var showsConfiguration = false

@Injected(\.chatClient) var chatClient

Expand All @@ -28,7 +29,12 @@ class LoginViewModel: ObservableObject {
LogConfig.level = .warning

chatClient.connectUser(
userInfo: .init(id: credentials.id, name: credentials.name, imageURL: credentials.avatarURL),
userInfo: .init(
id: credentials.id,
name: credentials.name,
imageURL: credentials.avatarURL,
language: AppConfiguration.default.translationLanguage
),
token: token
) { [weak self] error in
if let error = error {
Expand Down
2 changes: 1 addition & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,7 @@ GEM
puma (6.4.3)
nio4r (~> 2.0)
racc (1.8.1)
rack (3.1.10)
rack (3.1.12)
rack-protection (4.1.0)
base64 (>= 0.1.0)
logger (>= 1.6.0)
Expand Down
2 changes: 1 addition & 1 deletion Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ let package = Package(
)
],
dependencies: [
.package(url: "https://github.com/GetStream/stream-chat-swift.git", from: "4.73.0"),
.package(url: "https://github.com/GetStream/stream-chat-swift.git", from: "4.74.0"),
],
targets: [
.target(
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<p align="center">
<a href="https://sonarcloud.io/summary/new_code?id=GetStream_stream-chat-swiftui"><img src="https://sonarcloud.io/api/project_badges/measure?project=GetStream_stream-chat-swiftui&metric=coverage" /></a>

<img id="stream-chat-swiftui-label" alt="StreamChatSwiftUI" src="https://img.shields.io/badge/StreamChatSwiftUI-8.83%20MB-blue"/>
<img id="stream-chat-swiftui-label" alt="StreamChatSwiftUI" src="https://img.shields.io/badge/StreamChatSwiftUI-8.18%20MB-blue"/>
</p>

## SwiftUI StreamChat SDK
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ public struct DefaultChatChannelHeader<Factory: ViewFactory>: ToolbarContent {
.accessibilityLabel(Text(L10n.Channel.Header.Info.title))

NavigationLink(isActive: $isActive) {
LazyView(ChatChannelInfoView(channel: channel, shownFromMessageList: true))
LazyView(ChatChannelInfoView(factory: factory, channel: channel, shownFromMessageList: true))
} label: {
EmptyView()
}
Expand Down
Loading
Loading