Skip to content

Instantly share code, notes, and snippets.

View esnssr's full-sized avatar
🏠
Working from home

Eslam Nasser esnssr

🏠
Working from home
  • Sweden - Denmark
  • 13:44 (UTC +02:00)
  • X @esnssr
View GitHub Profile
@peterfriese
peterfriese / View+InteractiveDismissDisable.swift
Last active April 10, 2024 06:44
This is an enhanced version of Apple's `interactiveDismissDisabled` view modifier which allows you to act on the user's attempt to dismiss a sheet. See my article for more details. I filed a feedback for a feature request to add this to SwiftUI: FB9782213 (https://openradar.appspot.com/FB9782213)
import SwiftUI
extension View {
public func interactiveDismissDisabled(_ isDisabled: Bool = true, onAttemptToDismiss: (() -> Void)? = nil) -> some View {
InteractiveDismissableView(view: self, isDisabled: isDisabled, onAttemptToDismiss: onAttemptToDismiss)
}
public func interactiveDismissDisabled(_ isDisabled: Bool = true, attemptToDismiss: Binding<Bool>) -> some View {
InteractiveDismissableView(view: self, isDisabled: isDisabled) {
attemptToDismiss.wrappedValue.toggle()

UPDATE: The Swift Standard Library team has filled its available intern slots for 2022. Thank you to all who applied!

Swift Standard Library Internship at Apple

Apple's Swift Standard Library team is now looking for interns for 2022!

This is a paid internship. While most internships last 3 months, starting in May or June, the starting dates and the internship length are flexible. Internships are restricted to students. Students must be enrolled in school in the quarter/semester immediately following the internship. We are looking for candidates of all education levels, from Bachelor’s to Ph.D. Applicants from outside the U.S.A. are welcome to apply as well.

If you are interested in applying, please email us your resume/CV in PDF or raw text form and answer the following two questions:

// A URLSession extension that fetches data from a URL and decodes to some Decodable type.
// Usage: let user = try await URLSession.shared.decode(UserData.self, from: someURL)
// Note: this requires Swift 5.5.
extension URLSession {
func decode<T: Decodable>(
_ type: T.Type = T.self,
from url: URL,
keyDecodingStrategy: JSONDecoder.KeyDecodingStrategy = .useDefaultKeys,
dataDecodingStrategy: JSONDecoder.DataDecodingStrategy = .deferredToData,
dateDecodingStrategy: JSONDecoder.DateDecodingStrategy = .deferredToDate