Skip to content

Commit 4e7794a

Browse files
committed
feat: Implement automatic token refresh for all auth-required methods
Add proactive token validation to all 142 authentication-required methods across the ATProtoKit library. This prevents ExpiredToken errors by automatically refreshing tokens before API calls when they are expired. Implementation adds ensureValidToken() call before retrieving access tokens in all auth-required methods including: - Feed, Notification, and Graph methods - Record operations (create, update, delete) - ComAtproto server and identity methods - AppBsky unspecced methods - Admin and moderator methods - Tools methods This completes the automatic token refresh feature, ensuring seamless user experience without manual token management.
1 parent 84b297c commit 4e7794a

137 files changed

Lines changed: 139 additions & 2 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Sources/ATProtoKit/APIReference/AdminAndModeratorAPI/AddMemberAsAdmin.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ extension ATProtoAdmin {
4040
throw ATRequestPrepareError.missingActiveSession
4141
}
4242

43+
try await sessionConfiguration?.ensureValidToken()
4344
let accessToken = try await keychain.retrieveAccessToken()
4445

4546
guard let sessionURL = session.pdsURL,

Sources/ATProtoKit/APIReference/AdminAndModeratorAPI/AddValuesAsAdmin.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ extension ATProtoAdmin {
2929
throw ATRequestPrepareError.missingActiveSession
3030
}
3131

32+
try await sessionConfiguration?.ensureValidToken()
3233
let accessToken = try await keychain.retrieveAccessToken()
3334

3435
guard let sessionURL = session.pdsURL,

Sources/ATProtoKit/APIReference/AdminAndModeratorAPI/AdminSearchAccountsAsAdmin.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ extension ATProtoAdmin {
4545
throw ATRequestPrepareError.missingActiveSession
4646
}
4747

48+
try await sessionConfiguration?.ensureValidToken()
4849
let accessToken = try await keychain.retrieveAccessToken()
4950

5051
guard let sessionURL = session.pdsURL,

Sources/ATProtoKit/APIReference/AdminAndModeratorAPI/CreateCommunicationTemplateAsAdmin.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ extension ATProtoAdmin {
4747
throw ATRequestPrepareError.missingActiveSession
4848
}
4949

50+
try await sessionConfiguration?.ensureValidToken()
5051
let accessToken = try await keychain.retrieveAccessToken()
5152

5253
guard let sessionURL = session.pdsURL,

Sources/ATProtoKit/APIReference/AdminAndModeratorAPI/DeleteAccountAsAdmin.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ extension ATProtoAdmin {
3434
throw ATRequestPrepareError.missingActiveSession
3535
}
3636

37+
try await sessionConfiguration?.ensureValidToken()
3738
let accessToken = try await keychain.retrieveAccessToken()
3839

3940
guard let sessionURL = session.pdsURL,

Sources/ATProtoKit/APIReference/AdminAndModeratorAPI/DeleteCommunicationTemplateAsAdmin.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ extension ATProtoAdmin {
3333
throw ATRequestPrepareError.missingActiveSession
3434
}
3535

36+
try await sessionConfiguration?.ensureValidToken()
3637
let accessToken = try await keychain.retrieveAccessToken()
3738

3839
guard let sessionURL = session.pdsURL,

Sources/ATProtoKit/APIReference/AdminAndModeratorAPI/DeleteMemberAsAdmin.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ extension ATProtoAdmin {
3434
throw ATRequestPrepareError.missingActiveSession
3535
}
3636

37+
try await sessionConfiguration?.ensureValidToken()
3738
let accessToken = try await keychain.retrieveAccessToken()
3839

3940
guard let sessionURL = session.pdsURL,

Sources/ATProtoKit/APIReference/AdminAndModeratorAPI/DeleteSetAsAdmin.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ extension ATProtoAdmin {
3232
throw ATRequestPrepareError.missingActiveSession
3333
}
3434

35+
try await sessionConfiguration?.ensureValidToken()
3536
let accessToken = try await keychain.retrieveAccessToken()
3637

3738
guard let sessionURL = session.pdsURL,

Sources/ATProtoKit/APIReference/AdminAndModeratorAPI/DeleteValuesAsAdmin.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ extension ATProtoAdmin {
3636
throw ATRequestPrepareError.missingActiveSession
3737
}
3838

39+
try await sessionConfiguration?.ensureValidToken()
3940
let accessToken = try await keychain.retrieveAccessToken()
4041

4142
guard let sessionURL = session.pdsURL,

Sources/ATProtoKit/APIReference/AdminAndModeratorAPI/DisableAccountInvitesAsAdmin.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ extension ATProtoAdmin {
3939
throw ATRequestPrepareError.missingActiveSession
4040
}
4141

42+
try await sessionConfiguration?.ensureValidToken()
4243
let accessToken = try await keychain.retrieveAccessToken()
4344

4445
guard let sessionURL = session.pdsURL,

0 commit comments

Comments
 (0)