Skip to content

Commit 6e32673

Browse files
authored
Fix an issue with site icons cropped in share extensions (#23950)
2 parents 9edac5f + 0862ef1 commit 6e32673

File tree

22 files changed

+150
-177
lines changed

22 files changed

+150
-177
lines changed

Modules/Package.swift

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,15 @@ let package = Package(
6666
.target(name: "WordPressSharedObjC", resources: [.process("Resources")], swiftSettings: [.swiftLanguageMode(.v5)]),
6767
.target(name: "WordPressShared", dependencies: [.target(name: "WordPressSharedObjC")], resources: [.process("Resources")], swiftSettings: [.swiftLanguageMode(.v5)]),
6868
.target(name: "WordPressTesting", resources: [.process("Resources")]),
69-
.target(name: "WordPressUI", dependencies: [.target(name: "WordPressShared")], resources: [.process("Resources")], swiftSettings: [.swiftLanguageMode(.v5)]),
69+
.target(
70+
name: "WordPressUI",
71+
dependencies: [
72+
"AsyncImageKit",
73+
.target(name: "WordPressShared")
74+
],
75+
resources: [.process("Resources")],
76+
swiftSettings: [.swiftLanguageMode(.v5)]
77+
),
7078
.testTarget(name: "JetpackStatsWidgetsCoreTests", dependencies: [.target(name: "JetpackStatsWidgetsCore")], swiftSettings: [.swiftLanguageMode(.v5)]),
7179
.testTarget(name: "DesignSystemTests", dependencies: [.target(name: "DesignSystem")], swiftSettings: [.swiftLanguageMode(.v5)]),
7280
.testTarget(name: "WordPressFluxTests", dependencies: ["WordPressFlux"], swiftSettings: [.swiftLanguageMode(.v5)]),
@@ -193,6 +201,7 @@ enum XcodeSupport {
193201
.xcodeTarget("XcodeTarget_StatsWidget", dependencies: [
194202
"JetpackStatsWidgetsCore",
195203
"WordPressShared",
204+
"WordPressUI",
196205
.product(name: "CocoaLumberjackSwift", package: "CocoaLumberjack"),
197206
.product(name: "WordPressAPI", package: "wordpress-rs"),
198207
.product(name: "ColorStudio", package: "color-studio"),

Modules/Sources/WordPressUI/Extensions/UIImageView+Blavatar.swift

Lines changed: 0 additions & 58 deletions
This file was deleted.
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"info" : {
3-
"version" : 1,
4-
"author" : "xcode"
3+
"author" : "xcode",
4+
"version" : 1
55
}
6-
}
6+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"images" : [
3+
{
4+
"filename" : "Vector.pdf",
5+
"idiom" : "universal"
6+
}
7+
],
8+
"info" : {
9+
"author" : "xcode",
10+
"version" : 1
11+
},
12+
"properties" : {
13+
"preserves-vector-representation" : true,
14+
"template-rendering-intent" : "template"
15+
}
16+
}
Binary file not shown.

WordPress/Classes/ViewRelated/Blog/Site Picker/BlogList/SiteIconView.swift renamed to Modules/Sources/WordPressUI/Views/SiteIconView.swift

Lines changed: 47 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
import UIKit
22
import SwiftUI
33
import AsyncImageKit
4-
import DesignSystem
5-
import WordPressShared
64

7-
struct SiteIconView: View {
8-
let viewModel: SiteIconViewModel
5+
public struct SiteIconView: View {
6+
public let viewModel: SiteIconViewModel
97

108
@Environment(\.siteIconBackgroundColor) private var backgroundColor
119

12-
var body: some View {
10+
public init(viewModel: SiteIconViewModel) {
11+
self.viewModel = viewModel
12+
}
13+
14+
public var body: some View {
1315
contents
1416
.clipShape(RoundedRectangle(cornerRadius: 6))
1517
}
@@ -56,7 +58,7 @@ struct SiteIconView: View {
5658

5759
private var failureStateView: some View {
5860
backgroundColor.overlay {
59-
Image.DS.icon(named: .vector)
61+
Image("vector", bundle: .module)
6062
.resizable()
6163
.frame(width: 18, height: 18)
6264
.tint(Color(.tertiaryLabel))
@@ -69,18 +71,52 @@ private struct SiteIconViewBackgroundColorKey: EnvironmentKey {
6971
}
7072

7173
extension EnvironmentValues {
72-
var siteIconBackgroundColor: Color {
74+
public var siteIconBackgroundColor: Color {
7375
get { self[SiteIconViewBackgroundColorKey.self] }
7476
set { self[SiteIconViewBackgroundColorKey.self] = newValue }
7577
}
7678
}
7779

80+
// MARK: - SiteIconViewModel
81+
82+
public struct SiteIconViewModel {
83+
public var imageURL: URL?
84+
public var firstLetter: Character?
85+
public var size: Size
86+
public var host: MediaHostProtocol?
87+
88+
public enum Size {
89+
case small
90+
case regular
91+
case large
92+
93+
public var width: CGFloat {
94+
switch self {
95+
case .small: 28
96+
case .regular: 40
97+
case .large: 72
98+
}
99+
}
100+
101+
public var size: CGSize {
102+
CGSize(width: width, height: width)
103+
}
104+
}
105+
106+
public init(imageURL: URL? = nil, firstLetter: Character? = nil, size: Size = .regular, host: MediaHostProtocol? = nil) {
107+
self.imageURL = imageURL
108+
self.firstLetter = firstLetter
109+
self.size = size
110+
self.host = host
111+
}
112+
}
113+
78114
// MARK: - SiteIconHostingView (UIKit)
79115

80-
final class SiteIconHostingView: UIView {
116+
public final class SiteIconHostingView: UIView {
81117
private let viewModel = SiteIconHostingViewModel()
82118

83-
override init(frame: CGRect) {
119+
public override init(frame: CGRect) {
84120
super.init(frame: frame)
85121

86122
let host = UIHostingController(rootView: _SiteIconHostingView(viewModel: viewModel))
@@ -90,11 +126,11 @@ final class SiteIconHostingView: UIView {
90126
host.view.pinSubviewToAllEdges(self)
91127
}
92128

93-
required init?(coder: NSCoder) {
129+
public required init?(coder: NSCoder) {
94130
fatalError("init(coder:) has not been implemented")
95131
}
96132

97-
func setIcon(with viewModel: SiteIconViewModel) {
133+
public func setIcon(with viewModel: SiteIconViewModel) {
98134
self.viewModel.icon = viewModel
99135
}
100136
}

RELEASE-NOTES.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
* [*] Fix an issue with Referrers in Stats showing invalid icons [#23943]
1616
* [*] Update site menu style on iPhone [#23944]
1717
* [*] Integrate zoom transitions in Themes, Reader [#23945, #23947]
18-
18+
* [*] Fix an issue with site icons cropped in share extensions [#23950]
1919

2020
25.6
2121
-----

WordPress/Classes/Models/ReaderPost+Swift.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Foundation
2+
import WordPressUI
23

34
extension ReaderPost {
45

WordPress/Classes/ViewRelated/Blog/Blog Details/Detail Header/BlogDetailHeaderView.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import Gridicons
22
import UIKit
33
import DesignSystem
44
import SwiftUI
5+
import WordPressUI
56

67
@objc protocol BlogDetailHeaderViewDelegate {
78
func makeSiteIconMenu() -> UIMenu?

WordPress/Classes/ViewRelated/Blog/Blog Details/Detail Header/SiteDetailsSiteIconView.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import UIKit
2+
import WordPressUI
23

34
final class SiteDetailsSiteIconView: UIView {
45

0 commit comments

Comments
 (0)