Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
18 changes: 10 additions & 8 deletions example/src/screens/ProfileScreen.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {
YouVersionPlatform,
YouVersionUserInfo,
} from "@youversion/platform-sdk-reactnative";
import { useEffect, useLayoutEffect, useState } from "react";
import { useLayoutEffect, useState } from "react";
import {
ActivityIndicator,
Alert,
Expand Down Expand Up @@ -41,8 +41,12 @@ export function ProfileScreen() {

async function handleSignIn() {
try {
const signInResult = await YouVersionAPI.Users.signIn(["bibles"]);
console.log("Sign-in result:", signInResult);
const signInResult = await YouVersionAPI.Users.signIn([
"email",
"profile",
"openid",
]);
console.log("Sign-in result:", JSON.stringify(signInResult, null, 2));
} catch (error) {
Alert.alert("Error signing in");
console.error("Error signing in:", error);
Expand Down Expand Up @@ -76,13 +80,11 @@ export function ProfileScreen() {
{currentUser && (
<>
<Image
source={{ uri: currentUser.avatarUrl }}
source={{ uri: currentUser.profilePicture }}
style={styles.avatar}
/>
<Text>
You are signed in as {currentUser.firstName || "(no firstname)"}{" "}
{currentUser.lastName || "(no lastname)"}
</Text>
<Text>You are signed in as {currentUser.name || "(no name)"}</Text>
<Text>{currentUser.email || "(no email)"}</Text>
<Button title="Sign Out" onPress={handleSignOut} />
</>
)}
Expand Down
32 changes: 18 additions & 14 deletions ios/APIs/YVPBibleAPI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,10 @@ internal struct BibleVersionRecord: Record {
var abbreviation: String?

@Field
var copyrightLong: String?
var promotionalContent: String?

@Field
var copyrightShort: String?
var copyright: String?

@Field
var languageTag: String?
Expand All @@ -94,6 +94,9 @@ internal struct BibleVersionRecord: Record {
@Field
var bookCodes: [String]?

@Field
var organizationId: String?

@Field
var books: [BibleBookRecord]?

Expand All @@ -105,14 +108,15 @@ internal struct BibleVersionRecord: Record {
init(bibleVersion: BibleVersion) {
self.id = bibleVersion.id
self.abbreviation = bibleVersion.abbreviation
self.copyrightLong = bibleVersion.copyrightLong
self.copyrightShort = bibleVersion.copyrightShort
self.promotionalContent = bibleVersion.promotionalContent
self.copyright = bibleVersion.copyright
self.languageTag = bibleVersion.languageTag
self.localizedAbbreviation = bibleVersion.localizedAbbreviation
self.localizedTitle = bibleVersion.localizedTitle
self.readerFooter = bibleVersion.readerFooter
self.readerFooterUrl = bibleVersion.readerFooterUrl
self.title = bibleVersion.title
self.organizationId = bibleVersion.organizationId
self.bookCodes = bibleVersion.bookCodes

if let bibleVersionBooks = bibleVersion.books {
Expand All @@ -125,7 +129,7 @@ internal struct BibleVersionRecord: Record {

internal struct BibleBookRecord: Record {
@Field
var usfm: String?
var id: String?

@Field
var abbreviation: String?
Expand All @@ -134,18 +138,22 @@ internal struct BibleBookRecord: Record {
var title: String?

@Field
var titleLong: String?
var fullTitle: String?

@Field
var chapters: [BibleChapterRecord]?

@Field
var canon: String?

init() { }

init(bibleBook: BibleBook) {
self.usfm = bibleBook.usfm
self.id = bibleBook.id
self.abbreviation = bibleBook.abbreviation
self.title = bibleBook.title
self.titleLong = bibleBook.titleLong
self.fullTitle = bibleBook.fullTitle
self.canon = bibleBook.canon

if let bibleBookChapters = bibleBook.chapters {
self.chapters = bibleBookChapters.map(BibleChapterRecord.init)
Expand All @@ -155,10 +163,7 @@ internal struct BibleBookRecord: Record {

internal struct BibleChapterRecord: Record {
@Field
var bookUSFM: String?

@Field
var isCanonical: Bool?
var id: String?

@Field
var passageId: String?
Expand All @@ -169,8 +174,7 @@ internal struct BibleChapterRecord: Record {
init() { }

init(bibleChapter: BibleChapter) {
self.bookUSFM = bibleChapter.bookUSFM
self.isCanonical = bibleChapter.isCanonical
self.id = bibleChapter.id
self.passageId = bibleChapter.passageId
self.title = bibleChapter.title
}
Expand Down
4 changes: 2 additions & 2 deletions ios/APIs/YVPLanguagesAPI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ internal struct LanguageRecord: Record {
var textDirection: String

@Field
var defaultBibleVersionId: Int?
var defaultBibleId: Int?

init(_ response: LanguageOverview) {
self.id = response.id
Expand All @@ -65,6 +65,6 @@ internal struct LanguageRecord: Record {
self.variants = response.variants
self.countries = response.countries
self.textDirection = response.textDirection
self.defaultBibleVersionId = response.defaultBibleVersionId
self.defaultBibleId = response.defaultBibleId
}
}
11 changes: 5 additions & 6 deletions ios/Views/YVPBibleTextView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,10 @@ struct YVPBibleTextView: ExpoSwiftUI.View, ExpoSwiftUI.WithHostingView {
BibleTextView(
bibleReference(),
textOptions: textOptions(),
onVerseTap: { bibleRef, point in
onVerseTap: { bibleRef, urlScheme, footnotes in
props.onTap([
"bibleReference": toJsBibleReference(bibleRef),
"point": toJsPoint(point)
"urlScheme": urlScheme
])
}
)
Expand All @@ -57,10 +57,7 @@ struct YVPBibleTextView: ExpoSwiftUI.View, ExpoSwiftUI.WithHostingView {
"type": "verse"
]
}

func toJsPoint(_ point: CGPoint) -> [String: CGFloat] {
["x": point.x, "y": point.y]
}


func bibleReference() -> BibleReference {
if let start = props.verseStart, let end = props.verseEnd {
Expand Down Expand Up @@ -108,6 +105,8 @@ struct YVPBibleTextView: ExpoSwiftUI.View, ExpoSwiftUI.WithHostingView {
case "none": .none
case "inline": .inline
case "marker": .marker
case "letters": .letters
case "image": .image
default: .none
}
}
Expand Down
25 changes: 9 additions & 16 deletions ios/YVPAuthAPI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ struct YVPAuthAPI {
"refreshToken": response.refreshToken,
"name": response.name,
"profilePicture": response.profilePicture,
"email": response.email
"email": response.email,
"idToken": response.idToken,
])
} catch {
promise.reject(error)
Expand All @@ -37,21 +38,13 @@ struct YVPAuthAPI {
}
}

static func userInfo(accessToken: String?, promise: Promise) {
Task {
do {
let response = try await YouVersionAPI.Users.userInfo(accessToken: accessToken)

promise.resolve([
"firstName": response.firstName,
"lastName": response.lastName,
"userId": response.userId,
"avatarUrl": response.avatarUrl?.absoluteString
])
} catch {
promise.reject(error)
}
}
static func userInfo(promise: Promise) {
promise.resolve([
"name": YouVersionAPI.Users.currentUserName,
"email": YouVersionAPI.Users.currentUserEmail,
"id": YouVersionAPI.Users.currentUserId,
"profilePicture": YouVersionAPI.Users.currentUserProfilePicture
])
}
}

Expand Down
8 changes: 4 additions & 4 deletions ios/YouVersionReactNative.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ Pod::Spec.new do |s|
s.static_framework = true

s.dependency 'ExpoModulesCore'
s.dependency 'YouVersionPlatform', '0.1.0'
s.dependency 'YouVersionPlatformCore', '0.1.0'
s.dependency 'YouVersionPlatformUI', '0.1.0'
s.dependency 'YouVersionPlatformReader', '0.1.0'
s.dependency 'YouVersionPlatform', '1.0.1'
s.dependency 'YouVersionPlatformCore', '1.0.1'
s.dependency 'YouVersionPlatformUI', '1.0.1'
s.dependency 'YouVersionPlatformReader', '1.0.1'

# Swift/Objective-C compatibility
s.pod_target_xcconfig = {
Expand Down
14 changes: 7 additions & 7 deletions mocks/RNYouVersionPlatform.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,12 @@ export function signOut(): Promise<void> {
return Promise.resolve();
}

export function userInfo(_accessToken?: string): Promise<YouVersionUserInfo> {
export function userInfo(): Promise<YouVersionUserInfo> {
return Promise.resolve({
avatarUrl: "https://example.com/avatar.png",
firstName: "Mock",
lastName: "User",
yvpUserId: "mock-yvp-user-id",
profilePicture: "https://example.com/avatar.png",
name: "Mock User",
email: "mockuser@example.com",
id: "mock-yvp-user-id",
});
}

Expand All @@ -55,8 +55,8 @@ export function versions(_languageTag?: string): Promise<BibleVersion[]> {
abbreviation: "KJV",
languageTag: "en",
bookCodes: ["GEN", "EXO", "LEV"],
copyrightLong: "King James Version Copyright",
copyrightShort: "KJV Copyright",
copyright: "King James Version Copyright",
promotionalContent: "<div>promotional content</div>",
localizedAbbreviation: "KJV",
localizedTitle: "King James Version",
textDirection: "ltr",
Expand Down
Loading