Skip to content

Commit c550b2c

Browse files
committed
- bugfixes
1 parent e7b2233 commit c550b2c

File tree

9 files changed

+690
-145
lines changed

9 files changed

+690
-145
lines changed

Telegram-Mac/Appearance.swift

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,127 @@ public func generateDisclosureActionBoostLevelBadgeImage(text: String) -> CGImag
9191
}
9292
#endif
9393

94+
95+
import Cocoa
96+
97+
func generateRoundedRectWithTailPath(rectSize: CGSize, cornerRadius: CGFloat? = nil, tailSize: CGSize = CGSize(width: 20.0, height: 9.0), tailRadius: CGFloat = 4.0, tailPosition: CGFloat? = 0.5, transformTail: Bool = true) -> NSBezierPath {
98+
let cornerRadius: CGFloat = cornerRadius ?? rectSize.height / 2.0
99+
let tailWidth: CGFloat = tailSize.width
100+
let tailHeight: CGFloat = tailSize.height
101+
102+
let rect = CGRect(origin: CGPoint(x: 0.0, y: tailHeight), size: rectSize)
103+
104+
guard let tailPosition else {
105+
let path = NSBezierPath(roundedRect: rect, xRadius: cornerRadius, yRadius: cornerRadius)
106+
return path
107+
}
108+
109+
let cutoff: CGFloat = 0.27
110+
111+
let path = NSBezierPath()
112+
path.move(to: CGPoint(x: rect.minX, y: rect.minY + cornerRadius))
113+
114+
var leftArcEndAngle: CGFloat = .pi / 2.0
115+
var leftConnectionArcRadius = tailRadius
116+
var tailLeftHalfWidth: CGFloat = tailWidth / 2.0
117+
var tailLeftArcStartAngle: CGFloat = -.pi / 4.0
118+
var tailLeftHalfRadius = tailRadius
119+
120+
var rightArcStartAngle: CGFloat = -.pi / 2.0
121+
var rightConnectionArcRadius = tailRadius
122+
var tailRightHalfWidth: CGFloat = tailWidth / 2.0
123+
var tailRightArcStartAngle: CGFloat = .pi / 4.0
124+
var tailRightHalfRadius = tailRadius
125+
126+
if transformTail {
127+
if tailPosition < 0.5 {
128+
let fraction = max(0.0, tailPosition - 0.15) / 0.35
129+
leftArcEndAngle *= fraction
130+
131+
let connectionFraction = max(0.0, tailPosition - 0.35) / 0.15
132+
leftConnectionArcRadius *= connectionFraction
133+
134+
if tailPosition < cutoff {
135+
let fraction = tailPosition / cutoff
136+
tailLeftHalfWidth *= fraction
137+
tailLeftArcStartAngle *= fraction
138+
tailLeftHalfRadius *= fraction
139+
}
140+
} else if tailPosition > 0.5 {
141+
let tailPosition = 1.0 - tailPosition
142+
let fraction = max(0.0, tailPosition - 0.15) / 0.35
143+
rightArcStartAngle *= fraction
144+
145+
let connectionFraction = max(0.0, tailPosition - 0.35) / 0.15
146+
rightConnectionArcRadius *= connectionFraction
147+
148+
if tailPosition < cutoff {
149+
let fraction = tailPosition / cutoff
150+
tailRightHalfWidth *= fraction
151+
tailRightArcStartAngle *= fraction
152+
tailRightHalfRadius *= fraction
153+
}
154+
}
155+
}
156+
157+
path.appendArc(withCenter: CGPoint(x: rect.minX + cornerRadius, y: rect.minY + cornerRadius),
158+
radius: cornerRadius,
159+
startAngle: 180,
160+
endAngle: 180 + max(0.0001, leftArcEndAngle * 180 / .pi),
161+
clockwise: false)
162+
163+
let leftArrowStart = max(rect.minX, rect.minX + rectSize.width * tailPosition - tailLeftHalfWidth - leftConnectionArcRadius)
164+
path.appendArc(withCenter: CGPoint(x: leftArrowStart, y: rect.minY - leftConnectionArcRadius),
165+
radius: leftConnectionArcRadius,
166+
startAngle: 90,
167+
endAngle: 45,
168+
clockwise: true)
169+
170+
path.line(to: CGPoint(x: max(rect.minX, rect.minX + rectSize.width * tailPosition - tailLeftHalfRadius), y: rect.minY - tailHeight))
171+
172+
path.appendArc(withCenter: CGPoint(x: rect.minX + rectSize.width * tailPosition, y: rect.minY - tailHeight + tailRadius / 2.0),
173+
radius: tailRadius,
174+
startAngle: -90 + tailLeftArcStartAngle * 180 / .pi,
175+
endAngle: -90 + tailRightArcStartAngle * 180 / .pi,
176+
clockwise: false)
177+
178+
path.line(to: CGPoint(x: min(rect.maxX, rect.minX + rectSize.width * tailPosition + tailRightHalfRadius), y: rect.minY - tailHeight))
179+
180+
let rightArrowStart = min(rect.maxX, rect.minX + rectSize.width * tailPosition + tailRightHalfWidth + rightConnectionArcRadius)
181+
path.appendArc(withCenter: CGPoint(x: rightArrowStart, y: rect.minY - rightConnectionArcRadius),
182+
radius: rightConnectionArcRadius,
183+
startAngle: 180 - 45,
184+
endAngle: 90,
185+
clockwise: true)
186+
187+
path.appendArc(withCenter: CGPoint(x: rect.minX + rectSize.width - cornerRadius, y: rect.minY + cornerRadius),
188+
radius: cornerRadius,
189+
startAngle: min(-0.0001, rightArcStartAngle * 180 / .pi),
190+
endAngle: 0,
191+
clockwise: false)
192+
193+
path.line(to: CGPoint(x: rect.minX + rectSize.width, y: rect.minY + rectSize.height - cornerRadius))
194+
195+
path.appendArc(withCenter: CGPoint(x: rect.minX + rectSize.width - cornerRadius, y: rect.minY + rectSize.height - cornerRadius),
196+
radius: cornerRadius,
197+
startAngle: 0,
198+
endAngle: 90,
199+
clockwise: false)
200+
201+
path.line(to: CGPoint(x: rect.minX + cornerRadius, y: rect.minY + rectSize.height))
202+
203+
path.appendArc(withCenter: CGPoint(x: rect.minX + cornerRadius, y: rect.minY + rectSize.height - cornerRadius),
204+
radius: cornerRadius,
205+
startAngle: 90,
206+
endAngle: 180,
207+
clockwise: false)
208+
209+
return path
210+
}
211+
212+
213+
214+
94215
func chatReplyLineDashTemplateImage(_ colors: PeerNameColors.Colors, flipped: Bool) -> CGImage? {
95216
let radius: CGFloat = 3.0
96217
var offset: CGFloat = 5.0

Telegram-Mac/ApplicationContext.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -537,7 +537,7 @@ final class AuthorizedApplicationContext: NSObject, SplitViewDelegate {
537537

538538
//showModal(with: StoryFoundListController(context: context, source: .hashtag("#telegram"), presentation: theme), for: context.window)
539539

540-
showModal(with: CallSettingsModalController(context.sharedContext), for: context.window)
540+
showModal(with: Star_ReactionsController(context: context), for: context.window)
541541

542542
// showModal(with: Star_TransactionScreen(context: context, peer: .init(context.myPeer!), transaction: StarsContext.State.Transaction.init(id: "kqwjeflklqwkejflqwkejflqkwejflqkwejf", count: 1000, date: Int32(Date().timeIntervalSince1970), peer: StarsContext.State.Transaction.Peer.appStore)), for: context.window)
543543
// showModal(with: FactCheckController(context: context), for: context.window)

Telegram-Mac/BoostChannelModalController.swift

Lines changed: 0 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -77,128 +77,6 @@ enum BoostSubject: Equatable {
7777

7878

7979

80-
private func generateBadgePath(rectSize: CGSize, tailPosition: CGFloat = 0.5) -> CGPath {
81-
let cornerRadius: CGFloat = rectSize.height / 2.0
82-
let tailWidth: CGFloat = 20.0
83-
let tailHeight: CGFloat = 9.0
84-
let tailRadius: CGFloat = 4.0
85-
86-
let rect = CGRect(origin: CGPoint(x: 0.0, y: tailHeight), size: rectSize)
87-
88-
let path = CGMutablePath()
89-
90-
path.move(to: CGPoint(x: rect.minX, y: rect.minY + cornerRadius))
91-
92-
var leftArcEndAngle: CGFloat = .pi / 2.0
93-
var leftConnectionArcRadius = tailRadius
94-
var tailLeftHalfWidth: CGFloat = tailWidth / 2.0
95-
var tailLeftArcStartAngle: CGFloat = -.pi / 4.0
96-
var tailLeftHalfRadius = tailRadius
97-
98-
var rightArcStartAngle: CGFloat = -.pi / 2.0
99-
var rightConnectionArcRadius = tailRadius
100-
var tailRightHalfWidth: CGFloat = tailWidth / 2.0
101-
var tailRightArcStartAngle: CGFloat = .pi / 4.0
102-
var tailRightHalfRadius = tailRadius
103-
104-
if tailPosition < 0.5 {
105-
let fraction = max(0.0, tailPosition - 0.15) / 0.35
106-
leftArcEndAngle *= fraction
107-
108-
let connectionFraction = max(0.0, tailPosition - 0.35) / 0.15
109-
leftConnectionArcRadius *= connectionFraction
110-
111-
if tailPosition < 0.27 {
112-
let fraction = tailPosition / 0.27
113-
tailLeftHalfWidth *= fraction
114-
tailLeftArcStartAngle *= fraction
115-
tailLeftHalfRadius *= fraction
116-
}
117-
} else if tailPosition > 0.5 {
118-
let tailPosition = 1.0 - tailPosition
119-
let fraction = max(0.0, tailPosition - 0.15) / 0.35
120-
rightArcStartAngle *= fraction
121-
122-
let connectionFraction = max(0.0, tailPosition - 0.35) / 0.15
123-
rightConnectionArcRadius *= connectionFraction
124-
125-
if tailPosition < 0.27 {
126-
let fraction = tailPosition / 0.27
127-
tailRightHalfWidth *= fraction
128-
tailRightArcStartAngle *= fraction
129-
tailRightHalfRadius *= fraction
130-
}
131-
}
132-
133-
path.addArc(
134-
center: CGPoint(x: rect.minX + cornerRadius, y: rect.minY + cornerRadius),
135-
radius: cornerRadius,
136-
startAngle: .pi,
137-
endAngle: .pi + leftArcEndAngle,
138-
clockwise: true
139-
)
140-
141-
let leftArrowStart = max(rect.minX, rect.minX + rectSize.width * tailPosition - tailLeftHalfWidth - leftConnectionArcRadius)
142-
path.addArc(
143-
center: CGPoint(x: leftArrowStart, y: rect.minY - leftConnectionArcRadius),
144-
radius: leftConnectionArcRadius,
145-
startAngle: .pi / 2.0,
146-
endAngle: .pi / 4.0,
147-
clockwise: false
148-
)
149-
150-
path.addLine(to: CGPoint(x: max(rect.minX, rect.minX + rectSize.width * tailPosition - tailLeftHalfRadius), y: rect.minY - tailHeight))
151-
152-
path.addArc(
153-
center: CGPoint(x: rect.minX + rectSize.width * tailPosition, y: rect.minY - tailHeight + tailRadius / 2.0),
154-
radius: tailRadius,
155-
startAngle: -.pi / 2.0 + tailLeftArcStartAngle,
156-
endAngle: -.pi / 2.0 + tailRightArcStartAngle,
157-
clockwise: true
158-
)
159-
160-
path.addLine(to: CGPoint(x: min(rect.maxX, rect.minX + rectSize.width * tailPosition + tailRightHalfRadius), y: rect.minY - tailHeight))
161-
162-
let rightArrowStart = min(rect.maxX, rect.minX + rectSize.width * tailPosition + tailRightHalfWidth + rightConnectionArcRadius)
163-
path.addArc(
164-
center: CGPoint(x: rightArrowStart, y: rect.minY - rightConnectionArcRadius),
165-
radius: rightConnectionArcRadius,
166-
startAngle: .pi - .pi / 4.0,
167-
endAngle: .pi / 2.0,
168-
clockwise: false
169-
)
170-
171-
path.addArc(
172-
center: CGPoint(x: rect.minX + rectSize.width - cornerRadius, y: rect.minY + cornerRadius),
173-
radius: cornerRadius,
174-
startAngle: rightArcStartAngle,
175-
endAngle: 0.0,
176-
clockwise: true
177-
)
178-
179-
path.addLine(to: CGPoint(x: rect.minX + rectSize.width, y: rect.minY + rectSize.height - cornerRadius))
180-
181-
path.addArc(
182-
center: CGPoint(x: rect.minX + rectSize.width - cornerRadius, y: rect.minY + rectSize.height - cornerRadius),
183-
radius: cornerRadius,
184-
startAngle: 0.0,
185-
endAngle: .pi / 2.0,
186-
clockwise: true
187-
)
188-
189-
path.addLine(to: CGPoint(x: rect.minX + cornerRadius, y: rect.minY + rectSize.height))
190-
191-
path.addArc(
192-
center: CGPoint(x: rect.minX + cornerRadius, y: rect.minY + rectSize.height - cornerRadius),
193-
radius: cornerRadius,
194-
startAngle: .pi / 2.0,
195-
endAngle: .pi,
196-
clockwise: true
197-
)
198-
199-
return path
200-
}
201-
20280

20381
private final class Arguments {
20482
let context: AccountContext

Telegram-Mac/Info.plist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
</dict>
3636
</array>
3737
<key>CFBundleVersion</key>
38-
<string>265398</string>
38+
<string>265501</string>
3939
<key>ITSAppUsesNonExemptEncryption</key>
4040
<false/>
4141
<key>LSApplicationCategoryType</key>

Telegram-Mac/Star_PurchaseInApp.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -529,6 +529,14 @@ func Star_PurschaseInApp(context: AccountContext, invoice: TelegramMediaInvoice,
529529
text = strings().starPurchasePaidMediaSuccess(strings().starPurchaseTextInCountable(Int(state.request.count)))
530530
}
531531
showModalText(for: window, text: text)
532+
533+
switch type {
534+
case .paidMedia:
535+
PlayConfetti(for: window, stars: true)
536+
default:
537+
break
538+
}
539+
532540
completion(.paid)
533541
procced = true
534542
close?()

0 commit comments

Comments
 (0)