├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.MD
├── LICENSE
├── README.md
├── android
├── README.md
├── java
│ ├── .gitignore
│ ├── .idea
│ │ ├── $CACHE_FILE$
│ │ ├── .gitignore
│ │ ├── .name
│ │ ├── assetWizardSettings.xml
│ │ ├── caches
│ │ │ └── build_file_checksums.ser
│ │ ├── compiler.xml
│ │ ├── gradle.xml
│ │ ├── jarRepositories.xml
│ │ ├── libraries
│ │ │ ├── Gradle__androidx_activity_activity_1_1_0_aar.xml
│ │ │ ├── Gradle__androidx_activity_activity_ktx_1_1_0_aar.xml
│ │ │ ├── Gradle__androidx_annotation_annotation_1_1_0.xml
│ │ │ ├── Gradle__androidx_annotation_annotation_experimental_1_0_0_aar.xml
│ │ │ ├── Gradle__androidx_appcompat_appcompat_1_2_0_aar.xml
│ │ │ ├── Gradle__androidx_appcompat_appcompat_resources_1_2_0_aar.xml
│ │ │ ├── Gradle__androidx_arch_core_core_common_2_1_0.xml
│ │ │ ├── Gradle__androidx_arch_core_core_runtime_2_1_0_aar.xml
│ │ │ ├── Gradle__androidx_asynclayoutinflater_asynclayoutinflater_1_0_0_aar.xml
│ │ │ ├── Gradle__androidx_cardview_cardview_1_0_0_aar.xml
│ │ │ ├── Gradle__androidx_collection_collection_1_1_0.xml
│ │ │ ├── Gradle__androidx_constraintlayout_constraintlayout_2_0_4_aar.xml
│ │ │ ├── Gradle__androidx_constraintlayout_constraintlayout_solver_2_0_4.xml
│ │ │ ├── Gradle__androidx_coordinatorlayout_coordinatorlayout_1_1_0_aar.xml
│ │ │ ├── Gradle__androidx_core_core_1_3_2_aar.xml
│ │ │ ├── Gradle__androidx_core_core_ktx_1_1_0_aar.xml
│ │ │ ├── Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml
│ │ │ ├── Gradle__androidx_customview_customview_1_1_0_aar.xml
│ │ │ ├── Gradle__androidx_databinding_viewbinding_4_1_2_aar.xml
│ │ │ ├── Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml
│ │ │ ├── Gradle__androidx_drawerlayout_drawerlayout_1_1_1_aar.xml
│ │ │ ├── Gradle__androidx_dynamicanimation_dynamicanimation_1_0_0_aar.xml
│ │ │ ├── Gradle__androidx_emoji_emoji_1_2_0_alpha03_aar.xml
│ │ │ ├── Gradle__androidx_emoji_emoji_appcompat_1_2_0_alpha03_aar.xml
│ │ │ ├── Gradle__androidx_emoji_emoji_bundled_1_2_0_alpha03_aar.xml
│ │ │ ├── Gradle__androidx_fragment_fragment_1_2_4_aar.xml
│ │ │ ├── Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml
│ │ │ ├── Gradle__androidx_legacy_legacy_support_core_ui_1_0_0_aar.xml
│ │ │ ├── Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml
│ │ │ ├── Gradle__androidx_legacy_legacy_support_v4_1_0_0_aar.xml
│ │ │ ├── Gradle__androidx_lifecycle_lifecycle_common_2_2_0.xml
│ │ │ ├── Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml
│ │ │ ├── Gradle__androidx_lifecycle_lifecycle_livedata_core_2_2_0_aar.xml
│ │ │ ├── Gradle__androidx_lifecycle_lifecycle_runtime_2_2_0_aar.xml
│ │ │ ├── Gradle__androidx_lifecycle_lifecycle_runtime_ktx_2_2_0_aar.xml
│ │ │ ├── Gradle__androidx_lifecycle_lifecycle_viewmodel_2_2_0_aar.xml
│ │ │ ├── Gradle__androidx_lifecycle_lifecycle_viewmodel_ktx_2_2_0_aar.xml
│ │ │ ├── Gradle__androidx_lifecycle_lifecycle_viewmodel_savedstate_2_2_0_aar.xml
│ │ │ ├── Gradle__androidx_loader_loader_1_0_0_aar.xml
│ │ │ ├── Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml
│ │ │ ├── Gradle__androidx_media_media_1_0_0_aar.xml
│ │ │ ├── Gradle__androidx_navigation_navigation_common_2_3_3_aar.xml
│ │ │ ├── Gradle__androidx_navigation_navigation_common_ktx_2_3_3_aar.xml
│ │ │ ├── Gradle__androidx_navigation_navigation_fragment_2_3_3_aar.xml
│ │ │ ├── Gradle__androidx_navigation_navigation_runtime_2_3_3_aar.xml
│ │ │ ├── Gradle__androidx_navigation_navigation_runtime_ktx_2_3_3_aar.xml
│ │ │ ├── Gradle__androidx_navigation_navigation_testing_2_3_3_aar.xml
│ │ │ ├── Gradle__androidx_navigation_navigation_ui_2_3_3_aar.xml
│ │ │ ├── Gradle__androidx_print_print_1_0_0_aar.xml
│ │ │ ├── Gradle__androidx_recyclerview_recyclerview_1_2_0_beta02_aar.xml
│ │ │ ├── Gradle__androidx_savedstate_savedstate_1_0_0_aar.xml
│ │ │ ├── Gradle__androidx_slidingpanelayout_slidingpanelayout_1_0_0_aar.xml
│ │ │ ├── Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml
│ │ │ ├── Gradle__androidx_test_core_1_3_0_aar.xml
│ │ │ ├── Gradle__androidx_test_espresso_espresso_core_3_3_0_aar.xml
│ │ │ ├── Gradle__androidx_test_espresso_espresso_idling_resource_3_3_0_aar.xml
│ │ │ ├── Gradle__androidx_test_ext_junit_1_1_2_aar.xml
│ │ │ ├── Gradle__androidx_test_monitor_1_3_0_aar.xml
│ │ │ ├── Gradle__androidx_test_runner_1_3_0_aar.xml
│ │ │ ├── Gradle__androidx_transition_transition_1_2_0_aar.xml
│ │ │ ├── Gradle__androidx_transition_transition_1_3_0_aar.xml
│ │ │ ├── Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml
│ │ │ ├── Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml
│ │ │ ├── Gradle__androidx_versionedparcelable_versionedparcelable_1_1_0_aar.xml
│ │ │ ├── Gradle__androidx_viewpager2_viewpager2_1_0_0_aar.xml
│ │ │ ├── Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml
│ │ │ ├── Gradle__com_google_android_material_material_1_3_0_aar.xml
│ │ │ ├── Gradle__com_google_code_findbugs_jsr305_2_0_1.xml
│ │ │ ├── Gradle__com_nabinbhandari_android_permissions_3_8_aar.xml
│ │ │ ├── Gradle__com_squareup_javawriter_2_1_1.xml
│ │ │ ├── Gradle__javax_inject_javax_inject_1.xml
│ │ │ ├── Gradle__junit_junit_4_12.xml
│ │ │ ├── Gradle__junit_junit_4_13_2.xml
│ │ │ ├── Gradle__org_hamcrest_hamcrest_core_1_3.xml
│ │ │ ├── Gradle__org_hamcrest_hamcrest_integration_1_3.xml
│ │ │ ├── Gradle__org_hamcrest_hamcrest_library_1_3.xml
│ │ │ ├── Gradle__org_jetbrains_annotations_13_0.xml
│ │ │ ├── Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_3_71.xml
│ │ │ ├── Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_3_71.xml
│ │ │ ├── Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_android_1_3_0.xml
│ │ │ └── Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_core_1_3_0.xml
│ │ ├── misc.xml
│ │ ├── modules.xml
│ │ └── navEditor.xml
│ ├── app
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ │ ├── androidTest
│ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── daily
│ │ │ │ └── partyline
│ │ │ │ └── ExampleInstrumentedTest.java
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── assets
│ │ │ │ └── audio-single-file.html
│ │ │ ├── ic_launcher-playstore.png
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ │ └── daily
│ │ │ │ │ └── partyline
│ │ │ │ │ ├── FooterAdapter.java
│ │ │ │ │ ├── GridConcatAdapter.java
│ │ │ │ │ ├── HeaderAdapter.java
│ │ │ │ │ ├── JoinFragment.java
│ │ │ │ │ ├── MainActivity.java
│ │ │ │ │ ├── OnItemClickListener.java
│ │ │ │ │ ├── Participant.java
│ │ │ │ │ ├── ParticipantsAdapter.java
│ │ │ │ │ ├── RoomFragment.java
│ │ │ │ │ ├── WebAppClient.java
│ │ │ │ │ └── WebAppClientCallback.java
│ │ │ └── res
│ │ │ │ ├── drawable
│ │ │ │ ├── ic_item_mic_off.xml
│ │ │ │ ├── ic_item_mic_on.xml
│ │ │ │ ├── ic_lightground.xml
│ │ │ │ ├── ic_mic_off.xml
│ │ │ │ ├── ic_mic_on.xml
│ │ │ │ └── ic_more__horizontal.xml
│ │ │ │ ├── layout
│ │ │ │ ├── activity_main.xml
│ │ │ │ ├── fragment_join.xml
│ │ │ │ ├── fragment_room.xml
│ │ │ │ ├── grid_item_participant.xml
│ │ │ │ ├── list_item_footer.xml
│ │ │ │ ├── list_item_header.xml
│ │ │ │ └── list_item_inner_grid.xml
│ │ │ │ ├── menu
│ │ │ │ └── popup_menu.xml
│ │ │ │ ├── mipmap-anydpi-v26
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_launcher_foreground.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_launcher_foreground.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_launcher_foreground.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_launcher_foreground.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_launcher_foreground.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ ├── navigation
│ │ │ │ └── navigation_graph.xml
│ │ │ │ ├── values-night
│ │ │ │ └── themes.xml
│ │ │ │ └── values
│ │ │ │ ├── colors.xml
│ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── themes.xml
│ │ │ └── test
│ │ │ └── java
│ │ │ └── com
│ │ │ └── daily
│ │ │ └── partyline
│ │ │ └── ExampleUnitTest.java
│ ├── build.gradle
│ ├── gradle.properties
│ ├── gradle
│ │ └── wrapper
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ ├── gradlew
│ ├── gradlew.bat
│ └── settings.gradle
└── kotlin
│ ├── .gitignore
│ ├── .idea
│ ├── $CACHE_FILE$
│ ├── .gitignore
│ ├── .name
│ ├── compiler.xml
│ ├── jarRepositories.xml
│ └── misc.xml
│ ├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── daily
│ │ │ └── partyline
│ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── assets
│ │ │ └── audio-single-file.html
│ │ ├── ic_launcher-playstore.png
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── daily
│ │ │ │ └── partyline
│ │ │ │ ├── FooterAdapter.kt
│ │ │ │ ├── GridConcatAdapter.kt
│ │ │ │ ├── HeaderAdapter.kt
│ │ │ │ ├── JoinFragment.kt
│ │ │ │ ├── MainActivity.kt
│ │ │ │ ├── OnItemClickListener.kt
│ │ │ │ ├── Participant.kt
│ │ │ │ ├── ParticipantsAdapter.kt
│ │ │ │ ├── RoomFragment.kt
│ │ │ │ ├── WebAppClient.kt
│ │ │ │ └── WebAppClientCallback.kt
│ │ └── res
│ │ │ ├── drawable
│ │ │ ├── ic_item_mic_off.xml
│ │ │ ├── ic_item_mic_on.xml
│ │ │ ├── ic_lightground.xml
│ │ │ ├── ic_mic_off.xml
│ │ │ ├── ic_mic_on.xml
│ │ │ └── ic_more__horizontal.xml
│ │ │ ├── layout
│ │ │ ├── activity_main.xml
│ │ │ ├── fragment_join.xml
│ │ │ ├── fragment_room.xml
│ │ │ ├── grid_item_participant.xml
│ │ │ ├── list_item_footer.xml
│ │ │ ├── list_item_header.xml
│ │ │ └── list_item_inner_grid.xml
│ │ │ ├── menu
│ │ │ └── popup_menu.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── navigation
│ │ │ └── navigation_graph.xml
│ │ │ ├── values-night
│ │ │ └── themes.xml
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── ic_launcher_background.xml
│ │ │ ├── strings.xml
│ │ │ └── themes.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── daily
│ │ └── partyline
│ │ └── ExampleUnitTest.kt
│ ├── build.gradle
│ ├── gradle.properties
│ ├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradlew
│ ├── gradlew.bat
│ └── settings.gradle
├── ios
├── .gitignore
├── Party Line.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Party Line.xcscheme
├── Party Line
│ ├── API
│ │ ├── Action.swift
│ │ ├── Client.swift
│ │ ├── Events.swift
│ │ ├── Identifiers.swift
│ │ ├── Participant.swift
│ │ └── Room.swift
│ ├── Auxiliaries
│ │ ├── JSONValue.swift
│ │ └── Message.swift
│ ├── Extensions
│ │ ├── Binding+Extensions.swift
│ │ ├── Color+Extensions.swift
│ │ └── JSONDecoder.swift
│ ├── Info.plist
│ ├── PartyLineApp.swift
│ ├── Preview Content
│ │ └── Preview Assets.xcassets
│ │ │ └── Contents.json
│ ├── Resources
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-Notification@2x.png
│ │ │ │ ├── Icon-Notification@3x.png
│ │ │ │ ├── Icon-Small-40@2x.png
│ │ │ │ ├── Icon-Small-40@3x.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ └── icon.png
│ │ │ ├── Contents.json
│ │ │ ├── daily
│ │ │ │ ├── Contents.json
│ │ │ │ ├── accentColor.colorset
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── backgroundColor.colorset
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── primaryColor.colorset
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── secondaryAccentColor.colorset
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── secondaryColor.colorset
│ │ │ │ │ └── Contents.json
│ │ │ │ └── textfieldBackgroundColor.colorset
│ │ │ │ │ └── Contents.json
│ │ │ └── logo.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── logo-1.pdf
│ │ │ │ └── logo.pdf
│ │ └── client.html
│ ├── View Controllers
│ │ └── ActivityViewController.swift
│ └── Views
│ │ ├── BadgeView.swift
│ │ ├── ContentView.swift
│ │ ├── HeaderView.swift
│ │ ├── InvitationView.swift
│ │ ├── LearnMoreView.swift
│ │ ├── ParticipantGridItemView.swift
│ │ ├── ParticipantsGridView.swift
│ │ ├── RoomView.swift
│ │ ├── TimeRemainingView.swift
│ │ └── WaitingView.swift
└── README.md
├── netlify.toml
├── react-native
├── .buckconfig
├── .eslintrc.js
├── .flowconfig
├── .gitattributes
├── .gitignore
├── .prettierrc.js
├── .watchmanconfig
├── README.md
├── __tests__
│ └── App-test.js
├── android
│ ├── app
│ │ ├── _BUCK
│ │ ├── build.gradle
│ │ ├── build_defs.bzl
│ │ ├── debug.keystore
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ │ ├── debug
│ │ │ ├── AndroidManifest.xml
│ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── audioonlyrn
│ │ │ │ └── ReactNativeFlipper.java
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── audioonlyrn
│ │ │ │ ├── MainActivity.java
│ │ │ │ └── MainApplication.java
│ │ │ └── res
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ └── values
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ ├── build.gradle
│ ├── gradle.properties
│ ├── gradle
│ │ └── wrapper
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ ├── gradlew
│ ├── gradlew.bat
│ └── settings.gradle
├── app.json
├── babel.config.js
├── components
│ ├── App.js
│ ├── CopyLinkBox.jsx
│ ├── Counter.jsx
│ ├── Header.jsx
│ ├── InCall.jsx
│ ├── Menu.jsx
│ ├── Participant.jsx
│ ├── PreJoinRoom.jsx
│ ├── Tray.jsx
│ ├── icons
│ │ ├── logo.png
│ │ ├── logo@2x.png
│ │ ├── logo@3x.png
│ │ ├── mic.png
│ │ ├── mic@2x.png
│ │ ├── mic@3x.png
│ │ ├── more.png
│ │ ├── more@2x.png
│ │ ├── more@3x.png
│ │ ├── muted.png
│ │ ├── muted@2x.png
│ │ ├── muted@3x.png
│ │ ├── simple_mic.png
│ │ ├── simple_mic@2x.png
│ │ ├── simple_mic@3x.png
│ │ ├── simple_muted.png
│ │ ├── simple_muted@2x.png
│ │ └── simple_muted@3x.png
│ └── theme.js
├── contexts
│ └── CallProvider.jsx
├── index.js
├── ios
│ ├── AudioOnlyRN-tvOS
│ │ └── Info.plist
│ ├── AudioOnlyRN-tvOSTests
│ │ └── Info.plist
│ ├── AudioOnlyRN.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ ├── AudioOnlyRN-tvOS.xcscheme
│ │ │ └── AudioOnlyRN.xcscheme
│ ├── AudioOnlyRN.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── AudioOnlyRN
│ │ ├── AppDelegate.h
│ │ ├── AppDelegate.m
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── partylineApp 2 Android.png
│ │ │ │ ├── partylineApp 2 iOS@2x.png
│ │ │ │ └── partylineApp 2 iOS@3x.png
│ │ │ └── Contents.json
│ │ ├── Info.plist
│ │ ├── LaunchScreen.storyboard
│ │ └── main.m
│ ├── AudioOnlyRNTests
│ │ ├── AudioOnlyRNTests.m
│ │ └── Info.plist
│ ├── Podfile
│ └── Podfile.lock
├── metro.config.js
├── package-lock.json
└── package.json
├── react
├── .gitignore
├── README.md
├── package-lock.json
├── package.json
├── public
│ ├── favicon.ico
│ ├── index.html
│ ├── logo192.png
│ ├── logo512.png
│ ├── manifest.json
│ └── robots.txt
├── server
│ ├── .gitignore
│ ├── README.md
│ ├── api-helper.js
│ ├── functions
│ │ ├── room.js
│ │ └── token.js
│ ├── package-lock.json
│ ├── package.json
│ └── sample.env
└── src
│ ├── App.js
│ ├── App.test.js
│ ├── CallProvider.jsx
│ ├── components
│ ├── Audio.jsx
│ ├── CopyLinkBox.jsx
│ ├── Counter.jsx
│ ├── InCall.jsx
│ ├── Menu.jsx
│ ├── MicIcon.jsx
│ ├── MoreIcon.jsx
│ ├── MutedIcon.jsx
│ ├── Participant.jsx
│ ├── PreJoinRoom.jsx
│ └── shared
│ │ └── SmallText.js
│ ├── icons
│ ├── logo.svg
│ ├── mic.svg
│ ├── more.svg
│ ├── muted.svg
│ ├── simple_mic.svg
│ └── simple_muted.svg
│ ├── index.css
│ ├── index.js
│ ├── reportWebVitals.js
│ ├── setupTests.js
│ ├── theme.js
│ └── useClickAway.js
├── screenshot.png
└── yarn.lock
/README.md:
--------------------------------------------------------------------------------
1 | # Party line: Audio-only demos for React, React Native, iOS, and Android
2 |
3 | ## Built by and with [Daily](https://www.daily.co/)
4 |
5 | 
6 |
7 | Multi-platform audio-only demos, for React, React Native, Android, and iOS.
8 |
9 | See individual folder READMEs for setup instructions.
10 |
11 | Or deploy React and serverless parts instantly with the following button:
12 |
13 | [](https://app.netlify.com/start/deploy?repository=https://github.com/daily-demos/party-line)
14 |
15 | For a detailed overview, read our blog post on [building an audio-only app in a weekend.](https://www.daily.co/blog/p/6cf7dfd2-8214-456b-a495-2a089a3a89c7/)
16 |
--------------------------------------------------------------------------------
/android/java/.idea/$CACHE_FILE$:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | Android
10 |
11 |
12 | LintAndroid
13 |
14 |
15 | PerformanceLintAndroid
16 |
17 |
18 |
19 |
20 | Android
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/android/java/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 |
--------------------------------------------------------------------------------
/android/java/.idea/.name:
--------------------------------------------------------------------------------
1 | Party line
--------------------------------------------------------------------------------
/android/java/.idea/caches/build_file_checksums.ser:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/java/.idea/caches/build_file_checksums.ser
--------------------------------------------------------------------------------
/android/java/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/android/java/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
22 |
23 |
--------------------------------------------------------------------------------
/android/java/.idea/jarRepositories.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_activity_activity_1_1_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_activity_activity_ktx_1_1_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_annotation_annotation_1_1_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_annotation_annotation_experimental_1_0_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_2_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_appcompat_appcompat_resources_1_2_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_1_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_asynclayoutinflater_asynclayoutinflater_1_0_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_cardview_cardview_1_0_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_2_0_4_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_solver_2_0_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_1_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_core_core_1_3_2_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_core_core_ktx_1_1_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_customview_customview_1_1_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_databinding_viewbinding_4_1_2_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_1_1_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_dynamicanimation_dynamicanimation_1_0_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_emoji_emoji_1_2_0_alpha03_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_emoji_emoji_appcompat_1_2_0_alpha03_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_emoji_emoji_bundled_1_2_0_alpha03_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_fragment_fragment_1_2_4_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_ui_1_0_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_legacy_legacy_support_v4_1_0_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_2_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_2_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_2_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_ktx_2_2_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_2_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_ktx_2_2_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_savedstate_2_2_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_media_media_1_0_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_navigation_navigation_common_2_3_3_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_navigation_navigation_common_ktx_2_3_3_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_navigation_navigation_fragment_2_3_3_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_navigation_navigation_runtime_2_3_3_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_navigation_navigation_runtime_ktx_2_3_3_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_navigation_navigation_testing_2_3_3_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_navigation_navigation_ui_2_3_3_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_recyclerview_recyclerview_1_2_0_beta02_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_savedstate_savedstate_1_0_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_slidingpanelayout_slidingpanelayout_1_0_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_test_core_1_3_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_test_espresso_espresso_core_3_3_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_test_espresso_espresso_idling_resource_3_3_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_test_ext_junit_1_1_2_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_test_monitor_1_3_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_test_runner_1_3_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_transition_transition_1_2_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_transition_transition_1_3_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_viewpager2_viewpager2_1_0_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__com_google_android_material_material_1_3_0_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__com_nabinbhandari_android_permissions_3_8_aar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__com_squareup_javawriter_2_1_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__junit_junit_4_12.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__junit_junit_4_13_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__org_jetbrains_annotations_13_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_3_71.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_3_71.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_android_1_3_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_core_1_3_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/java/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/java/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/android/java/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
--------------------------------------------------------------------------------
/android/java/app/src/androidTest/java/com/daily/partyline/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.daily.partyline;
2 |
3 | import android.content.Context;
4 |
5 | import androidx.test.platform.app.InstrumentationRegistry;
6 | import androidx.test.ext.junit.runners.AndroidJUnit4;
7 |
8 | import org.junit.Test;
9 | import org.junit.runner.RunWith;
10 |
11 | import static org.junit.Assert.*;
12 |
13 | /**
14 | * Instrumented test, which will execute on an Android device.
15 | *
16 | * @see Testing documentation
17 | */
18 | @RunWith(AndroidJUnit4.class)
19 | public class ExampleInstrumentedTest {
20 | @Test
21 | public void useAppContext() {
22 | // Context of the app under test.
23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
24 | assertEquals("com.daily.audioonly", appContext.getPackageName());
25 | }
26 | }
--------------------------------------------------------------------------------
/android/java/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
17 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/android/java/app/src/main/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/java/app/src/main/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/android/java/app/src/main/java/com/daily/partyline/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.daily.partyline;
2 |
3 | import androidx.appcompat.app.AppCompatActivity;
4 | import androidx.appcompat.app.AppCompatDelegate;
5 |
6 | import android.os.Bundle;
7 | import android.view.WindowManager;
8 |
9 | public class MainActivity extends AppCompatActivity {
10 |
11 | @Override
12 | protected void onCreate(Bundle savedInstanceState) {
13 | super.onCreate(savedInstanceState);
14 | setContentView(R.layout.activity_main);
15 | getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/android/java/app/src/main/java/com/daily/partyline/OnItemClickListener.java:
--------------------------------------------------------------------------------
1 | package com.daily.partyline;
2 |
3 | public interface OnItemClickListener {
4 | void onModeratorMute(String Id);
5 | void onModeratorChangeRole(String Id);
6 | void onModeratorMakeModerator(String Id);
7 | void onModeratorEject(String Id);
8 | }
9 |
--------------------------------------------------------------------------------
/android/java/app/src/main/java/com/daily/partyline/WebAppClientCallback.java:
--------------------------------------------------------------------------------
1 | package com.daily.partyline;
2 |
3 | public interface WebAppClientCallback {
4 |
5 | void setRoomName(String roomName);
6 | void onJoinedMeeting();
7 | void onTick(String timer);
8 | void onDataChanged();
9 | void onForceEject();
10 | void onError();
11 | void onRoleChanged();
12 | void onEndCall();
13 | void onAudioStateChanged(Boolean isMuted);
14 | }
15 |
--------------------------------------------------------------------------------
/android/java/app/src/main/res/drawable/ic_item_mic_on.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
13 |
14 |
--------------------------------------------------------------------------------
/android/java/app/src/main/res/drawable/ic_mic_on.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/android/java/app/src/main/res/drawable/ic_more__horizontal.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/android/java/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
21 |
22 |
--------------------------------------------------------------------------------
/android/java/app/src/main/res/layout/list_item_inner_grid.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
23 |
24 |
--------------------------------------------------------------------------------
/android/java/app/src/main/res/menu/popup_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/android/java/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/java/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/java/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/java/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/java/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/java/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/java/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/java/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/java/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/java/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/java/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/java/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/java/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/java/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/java/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/java/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/java/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/java/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/java/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/java/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/java/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/java/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/java/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/java/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/java/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/java/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/java/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/java/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/java/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/java/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/java/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/java/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/java/app/src/main/res/navigation/navigation_graph.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
16 |
17 |
22 |
27 |
32 |
33 |
--------------------------------------------------------------------------------
/android/java/app/src/main/res/values-night/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/android/java/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFC8D1DC
4 | #FFE6EAEF
5 | #FFF7F9FA
6 | #FF121A24
7 | #FF6B7785
8 | #FF1BEBB9
9 | #FF00A981
10 | #FF000000
11 | #FFFFFFFF
12 |
--------------------------------------------------------------------------------
/android/java/app/src/main/res/values/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FD6527
4 |
--------------------------------------------------------------------------------
/android/java/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Party Line
3 | Learn more about this demo
4 | Learn more
5 |
6 |
--------------------------------------------------------------------------------
/android/java/app/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/android/java/app/src/test/java/com/daily/partyline/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.daily.partyline;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/android/java/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 | buildscript {
3 | repositories {
4 | google()
5 | jcenter()
6 | }
7 | dependencies {
8 | classpath "com.android.tools.build:gradle:4.1.2"
9 | classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.3"
10 | // NOTE: Do not place your application dependencies here; they belong
11 | // in the individual module build.gradle files
12 | }
13 | }
14 |
15 | allprojects {
16 | repositories {
17 | google()
18 | jcenter()
19 | }
20 | gradle.projectsEvaluated {
21 | tasks.withType(JavaCompile) {
22 | options.compilerArgs << "-Xlint:unchecked"
23 | }
24 | }
25 |
26 | }
27 |
28 | task clean(type: Delete) {
29 | delete rootProject.buildDir
30 | }
--------------------------------------------------------------------------------
/android/java/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 | # AndroidX package structure to make it clearer which packages are bundled with the
15 | # Android operating system, and which are packaged with your app"s APK
16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn
17 | android.useAndroidX=true
18 | # Automatically convert third-party libraries to use AndroidX
19 | android.enableJetifier=true
--------------------------------------------------------------------------------
/android/java/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/java/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/android/java/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Feb 12 19:48:00 EET 2021
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip
7 |
--------------------------------------------------------------------------------
/android/java/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "Party line"
--------------------------------------------------------------------------------
/android/kotlin/.idea/$CACHE_FILE$:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | Android
10 |
11 |
12 | LintAndroid
13 |
14 |
15 | PerformanceLintAndroid
16 |
17 |
18 |
19 |
20 | Android
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/android/kotlin/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 |
--------------------------------------------------------------------------------
/android/kotlin/.idea/.name:
--------------------------------------------------------------------------------
1 | Party line
--------------------------------------------------------------------------------
/android/kotlin/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/android/kotlin/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/android/kotlin/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
--------------------------------------------------------------------------------
/android/kotlin/app/src/androidTest/java/com/daily/partyline/ExampleInstrumentedTest.kt:
--------------------------------------------------------------------------------
1 | package com.daily.partyline
2 |
3 | import androidx.test.ext.junit.runners.AndroidJUnit4
4 | import androidx.test.platform.app.InstrumentationRegistry
5 | import org.junit.Assert
6 | import org.junit.Test
7 | import org.junit.runner.RunWith
8 |
9 | /**
10 | * Instrumented test, which will execute on an Android device.
11 | *
12 | * @see [Testing documentation](http://d.android.com/tools/testing)
13 | */
14 | @RunWith(AndroidJUnit4::class)
15 | class ExampleInstrumentedTest {
16 | @Test
17 | fun useAppContext() {
18 | // Context of the app under test.
19 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext
20 | Assert.assertEquals("com.daily.audioonly", appContext.packageName)
21 | }
22 | }
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
17 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/kotlin/app/src/main/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/java/com/daily/partyline/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.daily.partyline
2 |
3 | import android.os.Bundle
4 | import android.view.WindowManager
5 | import androidx.appcompat.app.AppCompatActivity
6 | import androidx.appcompat.app.AppCompatDelegate
7 |
8 | class MainActivity : AppCompatActivity() {
9 | override fun onCreate(savedInstanceState: Bundle?) {
10 | super.onCreate(savedInstanceState)
11 | setContentView(R.layout.activity_main)
12 | getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
13 | }
14 | }
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/java/com/daily/partyline/OnItemClickListener.kt:
--------------------------------------------------------------------------------
1 | package com.daily.partyline
2 |
3 | interface OnItemClickListener {
4 | open fun onModeratorMute(Id: String?)
5 | open fun onModeratorChangeRole(Id: String?)
6 | open fun onModeratorMakeModerator(Id: String?)
7 | open fun onModeratorEject(Id: String?)
8 | }
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/java/com/daily/partyline/WebAppClientCallback.kt:
--------------------------------------------------------------------------------
1 | package com.daily.partyline
2 |
3 | interface WebAppClientCallback {
4 | fun setRoomName(roomName: String?)
5 | fun onJoinedMeeting()
6 | fun onTick(timer: String?)
7 | fun onDataChanged()
8 | fun onForceEject()
9 | fun onError()
10 | fun onRoleChanged()
11 | fun onEndCall()
12 | fun onAudioStateChanged(isMuted: Boolean)
13 | }
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/drawable/ic_item_mic_on.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
13 |
14 |
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/drawable/ic_mic_on.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/drawable/ic_more__horizontal.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
21 |
22 |
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/layout/list_item_inner_grid.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
23 |
24 |
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/menu/popup_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/kotlin/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/kotlin/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/kotlin/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/kotlin/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/kotlin/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/kotlin/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/kotlin/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/kotlin/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/kotlin/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/kotlin/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/kotlin/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/kotlin/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/kotlin/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/kotlin/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/kotlin/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/values-night/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFC8D1DC
4 | #FFE6EAEF
5 | #FFF7F9FA
6 | #FF121A24
7 | #FF6B7785
8 | #FF1BEBB9
9 | #FF00A981
10 | #FF000000
11 | #FFFFFFFF
12 |
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/values/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FD6527
4 |
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Party Line
3 | Learn more about this demo
4 | Learn more
5 |
6 |
--------------------------------------------------------------------------------
/android/kotlin/app/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/android/kotlin/app/src/test/java/com/daily/partyline/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.daily.partyline
2 |
3 | import org.junit.Assert
4 | import org.junit.Test
5 |
6 | /**
7 | * Example local unit test, which will execute on the development machine (host).
8 | *
9 | * @see [Testing documentation](http://d.android.com/tools/testing)
10 | */
11 | class ExampleUnitTest {
12 | @Test
13 | fun addition_isCorrect() {
14 | Assert.assertEquals(4, (2 + 2).toLong())
15 | }
16 | }
--------------------------------------------------------------------------------
/android/kotlin/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 | buildscript {
3 | ext.kotlin_version = '1.4.31'
4 | repositories {
5 | google()
6 | jcenter()
7 | }
8 | dependencies {
9 | classpath "com.android.tools.build:gradle:4.1.2"
10 | classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.3"
11 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
12 | // NOTE: Do not place your application dependencies here; they belong
13 | // in the individual module build.gradle files
14 | }
15 | }
16 |
17 | allprojects {
18 | repositories {
19 | google()
20 | jcenter()
21 | }
22 | gradle.projectsEvaluated {
23 | tasks.withType(JavaCompile) {
24 | options.compilerArgs << "-Xlint:unchecked"
25 | }
26 | }
27 |
28 | }
29 |
30 | task clean(type: Delete) {
31 | delete rootProject.buildDir
32 | }
--------------------------------------------------------------------------------
/android/kotlin/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 | # AndroidX package structure to make it clearer which packages are bundled with the
15 | # Android operating system, and which are packaged with your app"s APK
16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn
17 | android.useAndroidX=true
18 | # Automatically convert third-party libraries to use AndroidX
19 | android.enableJetifier=true
--------------------------------------------------------------------------------
/android/kotlin/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/android/kotlin/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/android/kotlin/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Feb 12 19:48:00 EET 2021
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip
7 |
--------------------------------------------------------------------------------
/android/kotlin/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "Party line"
--------------------------------------------------------------------------------
/ios/Party Line.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Party Line.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Party Line/API/Action.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | enum Action: CustomStringConvertible {
4 | case muteParticipant
5 | case makeListener
6 | case makeSpeaker
7 | case makeModerator
8 | case ejectParticipant
9 |
10 | var description: String {
11 | switch self {
12 | case .muteParticipant:
13 | return "Mute"
14 | case .makeListener:
15 | return "Demote to Listener"
16 | case .makeSpeaker:
17 | return "Promote to Speaker"
18 | case .makeModerator:
19 | return "Promote to Moderator"
20 | case .ejectParticipant:
21 | return "Eject"
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/ios/Party Line/API/Room.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | struct Room: Decodable, Equatable {
4 | enum CodingKeys: String, CodingKey {
5 | case id
6 | case name
7 | case config
8 | }
9 |
10 | struct Config: Decodable, Equatable {
11 | enum CodingKeys: String, CodingKey {
12 | case exp
13 | }
14 |
15 | let expirationDate: Date
16 |
17 | init(from decoder: Decoder) throws {
18 | let container = try decoder.container(keyedBy: CodingKeys.self)
19 | self.expirationDate = Date(timeIntervalSince1970: try container.decode(
20 | TimeInterval.self,
21 | forKey: .exp
22 | ))
23 | }
24 | }
25 |
26 | let id: RoomID
27 | let name: String
28 | let config: Config
29 | }
30 |
--------------------------------------------------------------------------------
/ios/Party Line/Extensions/Color+Extensions.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 |
3 | extension Color {
4 | enum Daily {
5 | static let accentColor: Color = .init("daily/accentColor")
6 | static let secondaryAccentColor: Color = .init("daily/secondaryAccentColor")
7 | static let backgroundColor: Color = .init("daily/backgroundColor")
8 | static let textfieldBackgroundColor: Color = .init("daily/textfieldBackgroundColor")
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/ios/Party Line/Extensions/JSONDecoder.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | extension JSONDecoder {
4 | static func daily() -> JSONDecoder {
5 | let decoder = JSONDecoder()
6 |
7 | decoder.dateDecodingStrategy = .custom { decoder in
8 | let container = try decoder.singleValueContainer()
9 | let string = try container.decode(String.self)
10 |
11 | let formatter = ISO8601DateFormatter()
12 | formatter.timeZone = TimeZone(secondsFromGMT: 0)
13 | formatter.formatOptions = [
14 | .withFullDate,
15 | .withFullTime,
16 | .withDashSeparatorInDate,
17 | .withFractionalSeconds
18 | ]
19 |
20 | guard let date = formatter.date(from: string) else {
21 | throw DecodingError.dataCorruptedError(
22 | in: container,
23 | debugDescription: "Not a valid ISO8601 date"
24 | )
25 | }
26 |
27 | return date
28 | }
29 |
30 | return decoder
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/ios/Party Line/PartyLineApp.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 | import os
3 |
4 | let logger: Logger = .init()
5 |
6 | @main
7 | struct PartyLineApp: App {
8 | var body: some Scene {
9 | WindowGroup {
10 | ContentView()
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/ios/Party Line/Preview Content/Preview Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/ios/Party Line/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/ios/Party Line/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png
--------------------------------------------------------------------------------
/ios/Party Line/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/ios/Party Line/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png
--------------------------------------------------------------------------------
/ios/Party Line/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Notification@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/ios/Party Line/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Notification@2x.png
--------------------------------------------------------------------------------
/ios/Party Line/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Notification@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/ios/Party Line/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Notification@3x.png
--------------------------------------------------------------------------------
/ios/Party Line/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/ios/Party Line/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@2x.png
--------------------------------------------------------------------------------
/ios/Party Line/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/ios/Party Line/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@3x.png
--------------------------------------------------------------------------------
/ios/Party Line/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/ios/Party Line/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png
--------------------------------------------------------------------------------
/ios/Party Line/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/ios/Party Line/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png
--------------------------------------------------------------------------------
/ios/Party Line/Resources/Assets.xcassets/AppIcon.appiconset/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/ios/Party Line/Resources/Assets.xcassets/AppIcon.appiconset/icon.png
--------------------------------------------------------------------------------
/ios/Party Line/Resources/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/ios/Party Line/Resources/Assets.xcassets/daily/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | },
6 | "properties" : {
7 | "provides-namespace" : true
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/ios/Party Line/Resources/Assets.xcassets/daily/accentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "color" : {
5 | "color-space" : "srgb",
6 | "components" : {
7 | "alpha" : "1.000",
8 | "blue" : "0.694",
9 | "green" : "0.910",
10 | "red" : "0.097"
11 | }
12 | },
13 | "idiom" : "universal"
14 | },
15 | {
16 | "appearances" : [
17 | {
18 | "appearance" : "luminosity",
19 | "value" : "dark"
20 | }
21 | ],
22 | "color" : {
23 | "color-space" : "display-p3",
24 | "components" : {
25 | "alpha" : "1.000",
26 | "blue" : "0.510",
27 | "green" : "0.577",
28 | "red" : "0.136"
29 | }
30 | },
31 | "idiom" : "universal"
32 | }
33 | ],
34 | "info" : {
35 | "author" : "xcode",
36 | "version" : 1
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/ios/Party Line/Resources/Assets.xcassets/daily/backgroundColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "color" : {
5 | "color-space" : "srgb",
6 | "components" : {
7 | "alpha" : "1.000",
8 | "blue" : "0.980",
9 | "green" : "0.977",
10 | "red" : "0.965"
11 | }
12 | },
13 | "idiom" : "universal"
14 | },
15 | {
16 | "appearances" : [
17 | {
18 | "appearance" : "luminosity",
19 | "value" : "dark"
20 | }
21 | ],
22 | "color" : {
23 | "color-space" : "srgb",
24 | "components" : {
25 | "alpha" : "1.000",
26 | "blue" : "0.141",
27 | "green" : "0.102",
28 | "red" : "0.071"
29 | }
30 | },
31 | "idiom" : "universal"
32 | }
33 | ],
34 | "info" : {
35 | "author" : "xcode",
36 | "version" : 1
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/ios/Party Line/Resources/Assets.xcassets/daily/primaryColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "color" : {
5 | "color-space" : "srgb",
6 | "components" : {
7 | "alpha" : "1.000",
8 | "blue" : "0.141",
9 | "green" : "0.102",
10 | "red" : "0.071"
11 | }
12 | },
13 | "idiom" : "universal"
14 | },
15 | {
16 | "appearances" : [
17 | {
18 | "appearance" : "luminosity",
19 | "value" : "dark"
20 | }
21 | ],
22 | "color" : {
23 | "color-space" : "srgb",
24 | "components" : {
25 | "alpha" : "1.000",
26 | "blue" : "0.980",
27 | "green" : "0.977",
28 | "red" : "0.965"
29 | }
30 | },
31 | "idiom" : "universal"
32 | }
33 | ],
34 | "info" : {
35 | "author" : "xcode",
36 | "version" : 1
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/ios/Party Line/Resources/Assets.xcassets/daily/secondaryAccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "color" : {
5 | "color-space" : "srgb",
6 | "components" : {
7 | "alpha" : "1.000",
8 | "blue" : "0.863",
9 | "green" : "0.820",
10 | "red" : "0.784"
11 | }
12 | },
13 | "idiom" : "universal"
14 | },
15 | {
16 | "appearances" : [
17 | {
18 | "appearance" : "luminosity",
19 | "value" : "dark"
20 | }
21 | ],
22 | "color" : {
23 | "color-space" : "srgb",
24 | "components" : {
25 | "alpha" : "1.000",
26 | "blue" : "0.337",
27 | "green" : "0.247",
28 | "red" : "0.169"
29 | }
30 | },
31 | "idiom" : "universal"
32 | }
33 | ],
34 | "info" : {
35 | "author" : "xcode",
36 | "version" : 1
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/ios/Party Line/Resources/Assets.xcassets/daily/secondaryColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "color" : {
5 | "color-space" : "srgb",
6 | "components" : {
7 | "alpha" : "1.000",
8 | "blue" : "0.239",
9 | "green" : "0.176",
10 | "red" : "0.122"
11 | }
12 | },
13 | "idiom" : "universal"
14 | },
15 | {
16 | "appearances" : [
17 | {
18 | "appearance" : "luminosity",
19 | "value" : "dark"
20 | }
21 | ],
22 | "color" : {
23 | "color-space" : "srgb",
24 | "components" : {
25 | "alpha" : "1.000",
26 | "blue" : "0.933",
27 | "green" : "0.918",
28 | "red" : "0.902"
29 | }
30 | },
31 | "idiom" : "universal"
32 | }
33 | ],
34 | "info" : {
35 | "author" : "xcode",
36 | "version" : 1
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/ios/Party Line/Resources/Assets.xcassets/daily/textfieldBackgroundColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "color" : {
5 | "color-space" : "srgb",
6 | "components" : {
7 | "alpha" : "1.000",
8 | "blue" : "0.933",
9 | "green" : "0.918",
10 | "red" : "0.902"
11 | }
12 | },
13 | "idiom" : "universal"
14 | },
15 | {
16 | "appearances" : [
17 | {
18 | "appearance" : "luminosity",
19 | "value" : "dark"
20 | }
21 | ],
22 | "color" : {
23 | "color-space" : "srgb",
24 | "components" : {
25 | "alpha" : "1.000",
26 | "blue" : "0.239",
27 | "green" : "0.176",
28 | "red" : "0.122"
29 | }
30 | },
31 | "idiom" : "universal"
32 | }
33 | ],
34 | "info" : {
35 | "author" : "xcode",
36 | "version" : 1
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/ios/Party Line/Resources/Assets.xcassets/logo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "logo.pdf",
5 | "idiom" : "universal"
6 | },
7 | {
8 | "appearances" : [
9 | {
10 | "appearance" : "luminosity",
11 | "value" : "dark"
12 | }
13 | ],
14 | "filename" : "logo-1.pdf",
15 | "idiom" : "universal"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | },
22 | "properties" : {
23 | "preserves-vector-representation" : true
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/ios/Party Line/Resources/Assets.xcassets/logo.imageset/logo-1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/ios/Party Line/Resources/Assets.xcassets/logo.imageset/logo-1.pdf
--------------------------------------------------------------------------------
/ios/Party Line/Resources/Assets.xcassets/logo.imageset/logo.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/ios/Party Line/Resources/Assets.xcassets/logo.imageset/logo.pdf
--------------------------------------------------------------------------------
/ios/Party Line/View Controllers/ActivityViewController.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 | import SwiftUI
3 |
4 | struct ActivityViewController: UIViewControllerRepresentable {
5 | var activityItems: [Any]
6 | var applicationActivities: [UIActivity]? = nil
7 |
8 | func makeUIViewController(
9 | context: UIViewControllerRepresentableContext
10 | ) -> UIActivityViewController {
11 | return UIActivityViewController(
12 | activityItems: activityItems,
13 | applicationActivities: applicationActivities
14 | )
15 | }
16 |
17 | func updateUIViewController(
18 | _ uiViewController: UIActivityViewController,
19 | context: UIViewControllerRepresentableContext
20 | ) {
21 |
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/ios/Party Line/Views/BadgeView.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 |
3 | struct BadgeView: View
4 | where
5 | Content: View
6 | {
7 | let content: Content
8 |
9 | init(_ content: Content) {
10 | self.content = content
11 | }
12 |
13 | var body: some View {
14 | self.content
15 | .padding(5.0)
16 | .frame(width: 32.0, height: 32.0)
17 | .background(
18 | Circle()
19 | .foregroundColor(Color.white)
20 | )
21 | }
22 | }
23 |
24 | struct BadgeView_Previews: PreviewProvider {
25 | static var previews: some View {
26 | BadgeView(Image(systemName: "mic"))
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/ios/Party Line/Views/HeaderView.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 |
3 | struct HeaderView: View {
4 | var body: some View {
5 | VStack(alignment: .leading) {
6 | HStack(alignment: .center) {
7 | Text("Party line")
8 | .font(.largeTitle)
9 | .bold()
10 | Spacer()
11 | Image("logo")
12 | }
13 | Text("An audio API demo from Daily")
14 | .font(.footnote)
15 | .foregroundColor(.secondary)
16 | }
17 | }
18 | }
19 |
20 | struct HeaderView_Previews: PreviewProvider {
21 | static var previews: some View {
22 | HeaderView()
23 | .background(Color.Daily.backgroundColor)
24 | .previewLayout(.sizeThatFits)
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/ios/Party Line/Views/LearnMoreView.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 |
3 | struct LearnMoreView: View {
4 | private var url: URL {
5 | // FIXME: Update URL
6 | URL(string: "https://daily.co")!
7 | }
8 |
9 | var body: some View {
10 | HStack {
11 | Spacer()
12 | Link("Learn more about this demo", destination: self.url)
13 | .font(.footnote)
14 | Spacer()
15 | }
16 | }
17 | }
18 |
19 | struct LearnMoreView_Previews: PreviewProvider {
20 | static var previews: some View {
21 | LearnMoreView()
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/ios/Party Line/Views/TimeRemainingView.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 |
3 | struct TimeRemainingView: View {
4 | var timeRemaining: TimeInterval?
5 |
6 | static let formatter: DateComponentsFormatter = {
7 | let formatter = DateComponentsFormatter()
8 | formatter.allowedUnits = [.minute, .second]
9 | formatter.zeroFormattingBehavior = .pad
10 | return formatter
11 | }()
12 |
13 | var timeRemainingString: String {
14 | guard let timeRemaining = self.timeRemaining else {
15 | return "Demo ended"
16 | }
17 |
18 | let timeRemainingString = Self.formatter.string(
19 | from: timeRemaining
20 | )!
21 |
22 | return "Demo ends in \(timeRemainingString)"
23 | }
24 |
25 | var timeRemainingColor: Color {
26 | guard let timeRemaining = self.timeRemaining else {
27 | return .red
28 | }
29 |
30 | return timeRemaining > 10.0 ? .secondary : .red
31 | }
32 |
33 | var body: some View {
34 | Text(self.timeRemainingString)
35 | .foregroundColor(self.timeRemainingColor)
36 | .font(.footnote)
37 | }
38 | }
39 |
40 | struct TimeRemainingView_Previews: PreviewProvider {
41 | static var previews: some View {
42 | TimeRemainingView(timeRemaining: 42.0)
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/ios/Party Line/Views/WaitingView.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 |
3 | struct WaitingView: View {
4 | var body: some View {
5 | VStack(alignment: .center, spacing: 10.0) {
6 | ProgressView()
7 | Text("Waiting for Room …")
8 | .bold()
9 | }
10 | .padding()
11 | .overlay(
12 | RoundedRectangle(cornerRadius: 10)
13 | .stroke(Color.secondary.opacity(0.25))
14 | )
15 | }
16 | }
17 |
18 | struct WaitingView_Previews: PreviewProvider {
19 | static var previews: some View {
20 | WaitingView()
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/netlify.toml:
--------------------------------------------------------------------------------
1 | [build]
2 | # we put server/functions inside react so we can do a deploy button for both
3 | # netlify only allows a single deploy button (and related toml)
4 | functions = "server/functions"
5 |
6 | # react and subfolders are the only parts that can be netlify deployed it is our base
7 | base = "./react/"
8 |
9 | command = "npm run build"
10 |
11 | publish = "build/"
12 |
13 | [build.environment]
14 | # suppress failures for for build warnings
15 | CI = "false"
16 |
17 | [template.environment]
18 | DAILY_API_KEY = "Replace with Daily API key"
--------------------------------------------------------------------------------
/react-native/.buckconfig:
--------------------------------------------------------------------------------
1 |
2 | [android]
3 | target = Google Inc.:Google APIs:23
4 |
5 | [maven_repositories]
6 | central = https://repo1.maven.org/maven2
7 |
--------------------------------------------------------------------------------
/react-native/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | extends: '@react-native-community',
4 | };
5 |
--------------------------------------------------------------------------------
/react-native/.gitattributes:
--------------------------------------------------------------------------------
1 | *.pbxproj -text
2 |
--------------------------------------------------------------------------------
/react-native/.gitignore:
--------------------------------------------------------------------------------
1 | # OSX
2 | #
3 | .DS_Store
4 |
5 | # Xcode
6 | #
7 | build/
8 | *.pbxuser
9 | !default.pbxuser
10 | *.mode1v3
11 | !default.mode1v3
12 | *.mode2v3
13 | !default.mode2v3
14 | *.perspectivev3
15 | !default.perspectivev3
16 | xcuserdata
17 | *.xccheckout
18 | *.moved-aside
19 | DerivedData
20 | *.hmap
21 | *.ipa
22 | *.xcuserstate
23 |
24 | # Android/IntelliJ
25 | #
26 | build/
27 | .idea
28 | .gradle
29 | local.properties
30 | *.iml
31 |
32 | # node.js
33 | #
34 | node_modules/
35 | npm-debug.log
36 | yarn-error.log
37 |
38 | # BUCK
39 | buck-out/
40 | \.buckd/
41 | *.keystore
42 | !debug.keystore
43 |
44 | # fastlane
45 | #
46 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
47 | # screenshots whenever they are needed.
48 | # For more information about the recommended setup visit:
49 | # https://docs.fastlane.tools/best-practices/source-control/
50 |
51 | */fastlane/report.xml
52 | */fastlane/Preview.html
53 | */fastlane/screenshots
54 |
55 | # Bundle artifact
56 | *.jsbundle
57 |
58 | # CocoaPods
59 | /ios/Pods/
60 |
--------------------------------------------------------------------------------
/react-native/.prettierrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | bracketSpacing: false,
3 | jsxBracketSameLine: true,
4 | singleQuote: true,
5 | trailingComma: 'all',
6 | };
7 |
--------------------------------------------------------------------------------
/react-native/.watchmanconfig:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/react-native/__tests__/App-test.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @format
3 | */
4 |
5 | import 'react-native';
6 | import React from 'react';
7 | import App from '../App';
8 |
9 | // Note: test renderer must be required after react-native.
10 | import renderer from 'react-test-renderer';
11 |
12 | it('renders correctly', () => {
13 | renderer.create();
14 | });
15 |
--------------------------------------------------------------------------------
/react-native/android/app/build_defs.bzl:
--------------------------------------------------------------------------------
1 | """Helper definitions to glob .aar and .jar targets"""
2 |
3 | def create_aar_targets(aarfiles):
4 | for aarfile in aarfiles:
5 | name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")]
6 | lib_deps.append(":" + name)
7 | android_prebuilt_aar(
8 | name = name,
9 | aar = aarfile,
10 | )
11 |
12 | def create_jar_targets(jarfiles):
13 | for jarfile in jarfiles:
14 | name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")]
15 | lib_deps.append(":" + name)
16 | prebuilt_jar(
17 | name = name,
18 | binary_jar = jarfile,
19 | )
20 |
--------------------------------------------------------------------------------
/react-native/android/app/debug.keystore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/android/app/debug.keystore
--------------------------------------------------------------------------------
/react-native/android/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
--------------------------------------------------------------------------------
/react-native/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/react-native/android/app/src/main/java/com/audioonlyrn/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.audioonlyrn;
2 |
3 | import com.facebook.react.ReactActivity;
4 |
5 | public class MainActivity extends ReactActivity {
6 |
7 | /**
8 | * Returns the name of the main component registered from JavaScript. This is used to schedule
9 | * rendering of the component.
10 | */
11 | @Override
12 | protected String getMainComponentName() {
13 | return "AudioOnlyRN";
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/react-native/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/react-native/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/react-native/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/react-native/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/react-native/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/react-native/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/react-native/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/react-native/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/react-native/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/react-native/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/react-native/android/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | AudioOnlyRN
3 |
4 |
--------------------------------------------------------------------------------
/react-native/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/react-native/android/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | ext {
5 | buildToolsVersion = "29.0.2"
6 | minSdkVersion = 24
7 | compileSdkVersion = 29
8 | targetSdkVersion = 29
9 | }
10 | repositories {
11 | google()
12 | jcenter()
13 | }
14 | dependencies {
15 | classpath("com.android.tools.build:gradle:3.5.3")
16 | // NOTE: Do not place your application dependencies here; they belong
17 | // in the individual module build.gradle files
18 | }
19 | }
20 |
21 | allprojects {
22 | repositories {
23 | mavenLocal()
24 | maven {
25 | // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
26 | url("$rootDir/../node_modules/react-native/android")
27 | }
28 | maven {
29 | // Android JSC is installed from npm
30 | url("$rootDir/../node_modules/jsc-android/dist")
31 | }
32 |
33 | google()
34 | jcenter()
35 | maven { url 'https://www.jitpack.io' }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/react-native/android/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/android/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/react-native/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.2-all.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/react-native/android/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'AudioOnlyRN'
2 | apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
3 | include ':app'
4 |
--------------------------------------------------------------------------------
/react-native/app.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "AudioOnlyRN",
3 | "displayName": "AudioOnlyRN"
4 | }
--------------------------------------------------------------------------------
/react-native/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: ['module:metro-react-native-babel-preset'],
3 | };
4 |
--------------------------------------------------------------------------------
/react-native/components/Header.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {StyleSheet, View, Text, Image} from 'react-native';
3 | import theme from './theme';
4 |
5 | function Header() {
6 | return (
7 |
8 |
9 | Party line
10 |
15 |
16 | An audio API demo from Daily
17 |
18 | );
19 | }
20 |
21 | const styles = StyleSheet.create({
22 | header: {
23 | paddingHorizontal: 24,
24 | },
25 | headerTop: {
26 | alignItems: 'center',
27 | justifyContent: 'space-between',
28 | flexDirection: 'row',
29 | },
30 | title: {
31 | fontSize: theme.fontSize.xxlarge,
32 | marginHorizontal: 0,
33 | color: theme.colors.blueDark,
34 | fontWeight: '600',
35 | },
36 | logo: {
37 | height: 24,
38 | },
39 | smallText: {
40 | fontSize: theme.fontSize.large,
41 | color: theme.colors.greyDark,
42 | fontWeight: '400',
43 | marginTop: 8,
44 | marginBottom: 24,
45 | marginHorizontal: 0,
46 | },
47 | });
48 |
49 | export default Header;
50 |
--------------------------------------------------------------------------------
/react-native/components/icons/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/components/icons/logo.png
--------------------------------------------------------------------------------
/react-native/components/icons/logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/components/icons/logo@2x.png
--------------------------------------------------------------------------------
/react-native/components/icons/logo@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/components/icons/logo@3x.png
--------------------------------------------------------------------------------
/react-native/components/icons/mic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/components/icons/mic.png
--------------------------------------------------------------------------------
/react-native/components/icons/mic@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/components/icons/mic@2x.png
--------------------------------------------------------------------------------
/react-native/components/icons/mic@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/components/icons/mic@3x.png
--------------------------------------------------------------------------------
/react-native/components/icons/more.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/components/icons/more.png
--------------------------------------------------------------------------------
/react-native/components/icons/more@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/components/icons/more@2x.png
--------------------------------------------------------------------------------
/react-native/components/icons/more@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/components/icons/more@3x.png
--------------------------------------------------------------------------------
/react-native/components/icons/muted.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/components/icons/muted.png
--------------------------------------------------------------------------------
/react-native/components/icons/muted@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/components/icons/muted@2x.png
--------------------------------------------------------------------------------
/react-native/components/icons/muted@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/components/icons/muted@3x.png
--------------------------------------------------------------------------------
/react-native/components/icons/simple_mic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/components/icons/simple_mic.png
--------------------------------------------------------------------------------
/react-native/components/icons/simple_mic@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/components/icons/simple_mic@2x.png
--------------------------------------------------------------------------------
/react-native/components/icons/simple_mic@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/components/icons/simple_mic@3x.png
--------------------------------------------------------------------------------
/react-native/components/icons/simple_muted.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/components/icons/simple_muted.png
--------------------------------------------------------------------------------
/react-native/components/icons/simple_muted@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/components/icons/simple_muted@2x.png
--------------------------------------------------------------------------------
/react-native/components/icons/simple_muted@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/components/icons/simple_muted@3x.png
--------------------------------------------------------------------------------
/react-native/components/theme.js:
--------------------------------------------------------------------------------
1 | const theme = {
2 | colors: {
3 | blue: '#1f2d3d',
4 | blueDark: '#121a24',
5 | blueLight: '#2b3f56',
6 | cyan: '#00c9df',
7 | cyanDark: '#00a4b7',
8 | cyanLight: '#e2fbfd',
9 | green: '#72cc18',
10 | greenDark: '#62a60f',
11 | greenLight: '#eefae0',
12 | grey: '#c8d1dc',
13 | greyDark: '#6b7785',
14 | greyLight: '#e6eaef',
15 | greyLightest: '#f7f9fa',
16 | orange: '#fb651e',
17 | orangeDark: '#d48200',
18 | orangeLight: '#fef2d8',
19 | red: '#e71115',
20 | redDark: '#bb0c0c',
21 | redLight: '#fddddd',
22 | white: '#ffffff',
23 | turquoise: '#1bebb9',
24 | teal: '#14997a',
25 | },
26 | fontSize: {
27 | small: 11,
28 | base: 12,
29 | med: 14,
30 | large: 16,
31 | xlarge: 22,
32 | xxlarge: 32,
33 | },
34 | fontFamily: {
35 | regular: 'Helvetica, Arial, sans-serif',
36 | },
37 | };
38 |
39 | export default theme;
40 |
--------------------------------------------------------------------------------
/react-native/index.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @format
3 | */
4 |
5 | import {AppRegistry} from 'react-native';
6 | import App from './components/App';
7 | import {name as appName} from './app.json';
8 |
9 | AppRegistry.registerComponent(appName, () => App);
10 |
--------------------------------------------------------------------------------
/react-native/ios/AudioOnlyRN-tvOSTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/react-native/ios/AudioOnlyRN.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/react-native/ios/AudioOnlyRN.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/react-native/ios/AudioOnlyRN/AppDelegate.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 |
4 | @interface AppDelegate : UIResponder
5 |
6 | @property (nonatomic, strong) UIWindow *window;
7 |
8 | @end
9 |
--------------------------------------------------------------------------------
/react-native/ios/AudioOnlyRN/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images": [
3 | {
4 | "idiom": "iphone",
5 | "size": "29x29",
6 | "scale": "2x"
7 | },
8 | {
9 | "idiom": "iphone",
10 | "size": "29x29",
11 | "scale": "3x"
12 | },
13 | {
14 | "idiom": "iphone",
15 | "size": "40x40",
16 | "scale": "2x"
17 | },
18 | {
19 | "idiom": "iphone",
20 | "size": "40x40",
21 | "scale": "3x"
22 | },
23 | {
24 | "idiom": "iphone",
25 | "size": "60x60",
26 | "scale": "2x"
27 | },
28 | {
29 | "filename": "partylineApp 2 iOS@2x.png",
30 | "idiom": "iphone",
31 | "scale": "2x",
32 | "size": "60x60"
33 | },
34 | {
35 | "filename": "partylineApp 2 iOS@3x.png",
36 | "idiom": "iphone",
37 | "scale": "3x",
38 | "size": "60x60"
39 | },
40 | {
41 | "idiom": "ios-marketing",
42 | "scale": "1x",
43 | "size": "1024x1024"
44 | },
45 | {
46 | "filename": "partylineApp 2 Android.png",
47 | "idiom": "mac",
48 | "scale": "1x",
49 | "size": "512x512"
50 | }
51 | ],
52 | "info": {
53 | "version": 1,
54 | "author": "xcode"
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/react-native/ios/AudioOnlyRN/Images.xcassets/AppIcon.appiconset/partylineApp 2 Android.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/ios/AudioOnlyRN/Images.xcassets/AppIcon.appiconset/partylineApp 2 Android.png
--------------------------------------------------------------------------------
/react-native/ios/AudioOnlyRN/Images.xcassets/AppIcon.appiconset/partylineApp 2 iOS@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/ios/AudioOnlyRN/Images.xcassets/AppIcon.appiconset/partylineApp 2 iOS@2x.png
--------------------------------------------------------------------------------
/react-native/ios/AudioOnlyRN/Images.xcassets/AppIcon.appiconset/partylineApp 2 iOS@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react-native/ios/AudioOnlyRN/Images.xcassets/AppIcon.appiconset/partylineApp 2 iOS@3x.png
--------------------------------------------------------------------------------
/react-native/ios/AudioOnlyRN/Images.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/react-native/ios/AudioOnlyRN/main.m:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | #import "AppDelegate.h"
4 |
5 | int main(int argc, char * argv[]) {
6 | @autoreleasepool {
7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/react-native/ios/AudioOnlyRNTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/react-native/ios/Podfile:
--------------------------------------------------------------------------------
1 | require_relative '../node_modules/react-native/scripts/react_native_pods'
2 | require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
3 |
4 | platform :ios, '10.0'
5 |
6 | target 'AudioOnlyRN' do
7 | config = use_native_modules!
8 |
9 | use_react_native!(:path => config["reactNativePath"])
10 |
11 | target 'AudioOnlyRNTests' do
12 | inherit! :complete
13 | # Pods for testing
14 | end
15 |
16 | # Enables Flipper.
17 | #
18 | # Note that if you have use_frameworks! enabled, Flipper will not work and
19 | # you should disable these next few lines.
20 | use_flipper!
21 | post_install do |installer|
22 | flipper_post_install(installer)
23 | end
24 | end
25 |
26 | target 'AudioOnlyRN-tvOS' do
27 | # Pods for AudioOnlyRN-tvOS
28 |
29 | target 'AudioOnlyRN-tvOSTests' do
30 | inherit! :search_paths
31 | # Pods for testing
32 | end
33 | end
34 |
--------------------------------------------------------------------------------
/react-native/metro.config.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Metro configuration for React Native
3 | * https://github.com/facebook/react-native
4 | *
5 | * @format
6 | */
7 |
8 | module.exports = {
9 | resolver: {
10 | sourceExts: ['jsx', 'js'],
11 | },
12 | transformer: {
13 | getTransformOptions: async () => ({
14 | transform: {
15 | experimentalImportSupport: false,
16 | inlineRequires: false,
17 | },
18 | }),
19 | },
20 | };
21 |
--------------------------------------------------------------------------------
/react-native/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "AudioOnlyRN",
3 | "version": "0.0.1",
4 | "private": true,
5 | "scripts": {
6 | "android": "react-native run-android",
7 | "ios": "react-native run-ios",
8 | "start": "react-native start",
9 | "test": "jest",
10 | "lint": "eslint ."
11 | },
12 | "dependencies": {
13 | "@daily-co/react-native-daily-js": "^0.7.1",
14 | "@daily-co/react-native-webrtc": "^1.75.8",
15 | "@react-native-clipboard/clipboard": "^1.6.0",
16 | "@react-native-community/async-storage": "^1.12.1",
17 | "react": "16.13.1",
18 | "react-native": "0.63.4",
19 | "react-native-background-timer": "^2.4.1",
20 | "react-native-material-menu": "^1.2.0"
21 | },
22 | "devDependencies": {
23 | "@babel/core": "^7.8.4",
24 | "@babel/runtime": "^7.8.4",
25 | "@react-native-community/eslint-config": "^1.1.0",
26 | "babel-jest": "^25.1.0",
27 | "eslint": "^6.5.1",
28 | "jest": "^25.1.0",
29 | "metro-react-native-babel-preset": "^0.59.0",
30 | "react-test-renderer": "16.13.1"
31 | },
32 | "jest": {
33 | "preset": "react-native"
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/react/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # production
12 | /build
13 |
14 | # misc
15 | .DS_Store
16 | .env
17 | .env.local
18 | .env.development.local
19 | .env.test.local
20 | .env.production.local
21 |
22 | npm-debug.log*
23 | yarn-debug.log*
24 | yarn-error.log*
25 |
--------------------------------------------------------------------------------
/react/README.md:
--------------------------------------------------------------------------------
1 | # Party line: An audio-only demo for React
2 |
3 | ## Built by and with [Daily](https://docs.daily.co/reference)
4 |
5 | ---
6 |
7 | This app is built using [Create React App](https://github.com/facebook/create-react-app).
8 |
9 | To run locally:
10 |
11 | - Clone this repo locally
12 | - Run the following
13 |
14 | ```terminal
15 | npm i
16 | npm run start
17 | ```
18 |
19 | ## Testing
20 |
21 | To add more participants to your call, you can run additional windows locally or take advantage of the React demo currently hosted at [partyline.daily.co](https://partyline.daily.co/).
22 |
23 | ## Deployment
24 |
25 | Once you've deployed your own server, make sure to update the necessary URLs as noted in:
26 |
27 | - react/src/CallProvider.jsx
28 |
29 | ## A note for Safari users
30 |
31 | Safari prevents the auto playing of audio by default. You can enable this in Preferences > Websites > Auto-Play
32 |
--------------------------------------------------------------------------------
/react/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "audio-only-web",
3 | "version": "0.1.0",
4 | "private": true,
5 | "dependencies": {
6 | "@daily-co/daily-js": "^0.27.0",
7 | "@testing-library/jest-dom": "^5.11.4",
8 | "@testing-library/react": "^11.1.0",
9 | "@testing-library/user-event": "^12.1.10",
10 | "react": "^17.0.1",
11 | "react-dom": "^17.0.1",
12 | "react-scripts": "4.0.2",
13 | "styled-components": "^5.2.1",
14 | "web-vitals": "^1.0.1"
15 | },
16 | "scripts": {
17 | "start": "react-scripts start",
18 | "prebuild": "cd server/functions && npm install",
19 | "build": "react-scripts build",
20 | "test": "react-scripts test",
21 | "eject": "react-scripts eject"
22 | },
23 | "eslintConfig": {
24 | "extends": [
25 | "react-app",
26 | "react-app/jest"
27 | ]
28 | },
29 | "browserslist": {
30 | "production": [
31 | ">0.2%",
32 | "not dead",
33 | "not op_mini all"
34 | ],
35 | "development": [
36 | "last 1 chrome version",
37 | "last 1 firefox version",
38 | "last 1 safari version"
39 | ]
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/react/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react/public/favicon.ico
--------------------------------------------------------------------------------
/react/public/logo192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react/public/logo192.png
--------------------------------------------------------------------------------
/react/public/logo512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/react/public/logo512.png
--------------------------------------------------------------------------------
/react/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "React App",
3 | "name": "Create React App Sample",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "64x64 32x32 24x24 16x16",
8 | "type": "image/x-icon"
9 | },
10 | {
11 | "src": "logo192.png",
12 | "type": "image/png",
13 | "sizes": "192x192"
14 | },
15 | {
16 | "src": "logo512.png",
17 | "type": "image/png",
18 | "sizes": "512x512"
19 | }
20 | ],
21 | "start_url": ".",
22 | "display": "standalone",
23 | "theme_color": "#000000",
24 | "background_color": "#ffffff"
25 | }
26 |
--------------------------------------------------------------------------------
/react/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/react/server/README.md:
--------------------------------------------------------------------------------
1 | # audio-only-server
2 |
3 | Just kidding, it's serverless ;)
4 |
5 | There are two functions here, designed to be deployed as [Netlify functions](https://www.netlify.com/products/functions/)
6 |
7 | You can deploy to your account via the deploy button below (including the React app):
8 |
9 | [](https://app.netlify.com/start/deploy?repository=https://github.com/daily-demos/party-line)
10 |
11 | You will be prompted to add your API key, which you can get from the [Developers](https://dashboard.daily.co/developers) section of the Dashboard. Sign up for a free account if you don't have one already.
12 |
13 | ## Functions
14 |
15 | `room.js` - This accepts an empty `POST` and calls the [`/rooms`](https://docs.daily.co/reference#rooms) endpoint, with a few properties, feel free to change these in your own implementation. We're also calling [`/meeting-tokens`](https://docs.daily.co/reference#meeting-tokens) since you'll want at least one token when the room is initially created. This saves the client from doing two API calls.
16 |
17 | `token.js` - This accepts a `POST` with a body in the form of `{ properties: { room_name: INSERTNAME } }` and calls the [`/meeting-tokens`](https://docs.daily.co/reference#meeting-tokens) endpoint to create an owner token for the `room_name` specified.
18 |
--------------------------------------------------------------------------------
/react/server/api-helper.js:
--------------------------------------------------------------------------------
1 | const axios = require("axios");
2 |
3 | const BASE_URL = process.env.DAILY_BASE_URL || "https://api.daily.co/v1/"
4 | const API_AUTH = process.env.DAILY_API_KEY;
5 |
6 | // create an axios instance that includes the BASE_URL and your auth token
7 | // this may be useful to put in an external file to it can be referenced
8 | // elsewhere once your application grows
9 | const api = axios.create({
10 | baseURL: BASE_URL,
11 | timeout: 5000,
12 | headers: { Authorization: `Bearer ${API_AUTH}` },
13 | });
14 |
15 | exports.apiHelper = async (method, endpoint, body = {}) => {
16 | try {
17 | const response = await api.request({
18 | url: endpoint,
19 | method: method,
20 | data: body,
21 | });
22 | return response.data;
23 | } catch (error) {
24 | console.log("Status: ", error.response.status);
25 | console.log("Text: ", error.response.statusText);
26 | // need to throw again so error is caught
27 | // a possible improvement here is to pass the status code back so it can be returned to the user
28 | throw new Error(error);
29 | }
30 | };
31 |
--------------------------------------------------------------------------------
/react/server/functions/token.js:
--------------------------------------------------------------------------------
1 | const { apiHelper } = require("../api-helper");
2 |
3 | const headers = {
4 | "Content-Type": "application/json; charset=utf-8",
5 | "Access-Control-Allow-Origin": "*",
6 | "Access-Control-Allow-Headers": "Content-Type",
7 | "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE",
8 | };
9 |
10 | exports.handler = async function (event, context) {
11 | if (event.httpMethod !== "POST") {
12 | return {
13 | statusCode: 200,
14 | headers,
15 | body: "This was not a POST request!",
16 | };
17 | }
18 |
19 | const reqBody = JSON.parse(event.body);
20 | const roomName = reqBody.properties.room_name;
21 |
22 | let res = {};
23 | let code = 500;
24 | try {
25 | const tokenBody = JSON.stringify({
26 | properties: {
27 | // expire in 10 minutes
28 | exp: Math.round(Date.now() / 1000) + 10 * 60,
29 | room_name: roomName,
30 | is_owner: true,
31 | },
32 | });
33 | const token = await apiHelper("post", "/meeting-tokens", tokenBody);
34 |
35 | res = token;
36 | code = 200;
37 | } catch (e) {
38 | console.log("error: ", e);
39 | res = { error: e.message };
40 | code = 500;
41 | }
42 |
43 | return {
44 | statusCode: code,
45 | body: JSON.stringify(res),
46 | headers,
47 | };
48 | };
49 |
--------------------------------------------------------------------------------
/react/server/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "audio-only-server",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "axios": {
8 | "version": "0.21.1",
9 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
10 | "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
11 | "requires": {
12 | "follow-redirects": "^1.10.0"
13 | }
14 | },
15 | "follow-redirects": {
16 | "version": "1.13.2",
17 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.2.tgz",
18 | "integrity": "sha512-6mPTgLxYm3r6Bkkg0vNM0HTjfGrOEtsfbhagQvbxDEsEkpNhw582upBaoRZylzen6krEmxXJgt9Ju6HiI4O7BA=="
19 | },
20 | "prettier": {
21 | "version": "2.2.1",
22 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz",
23 | "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==",
24 | "dev": true
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/react/server/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "audio-only-server",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "",
6 | "scripts": {
7 | "prettify": "prettier --write \"./**/*.{js,css,html,md}\""
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "git+https://github.com/daily-demos/audio-only-server.git"
12 | },
13 | "author": "philmillman",
14 | "license": "ISC",
15 | "bugs": {
16 | "url": "https://github.com/daily-demos/audio-only-server/issues"
17 | },
18 | "homepage": "https://github.com/daily-demos/audio-only-server#readme",
19 | "devDependencies": {
20 | "prettier": "^2.2.1"
21 | },
22 | "dependencies": {
23 | "axios": "^0.21.1"
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/react/server/sample.env:
--------------------------------------------------------------------------------
1 | DAILY_API_KEY=REPLACE_WITH_YOUR_API_KEY
--------------------------------------------------------------------------------
/react/src/App.test.js:
--------------------------------------------------------------------------------
1 | import { render, screen } from '@testing-library/react';
2 | import App from './App';
3 |
4 | test('renders learn react link', () => {
5 | render();
6 | const linkElement = screen.getByText(/learn react/i);
7 | expect(linkElement).toBeInTheDocument();
8 | });
9 |
--------------------------------------------------------------------------------
/react/src/components/Menu.jsx:
--------------------------------------------------------------------------------
1 | import styled from "styled-components";
2 | import theme from "../theme";
3 |
4 | const Menu = ({ options, setIsVisible }) => {
5 | return (
6 |
7 | {(options || []).map((o, i) => (
8 | {
12 | o.action();
13 | setIsVisible(false);
14 | }}
15 | >
16 | {o.text}
17 |
18 | ))}
19 |
20 | );
21 | };
22 |
23 | const Container = styled.ul`
24 | display: flex;
25 | flex-direction: column;
26 | background-color: ${theme.colors.white};
27 | box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.04), 0px 0px 4px rgba(0, 0, 0, 0.08);
28 | margin: 0;
29 | padding: 8px 0;
30 | `;
31 | const Option = styled.li`
32 | list-style: none;
33 | font-size: ${theme.fontSize.base};
34 | color: ${(props) =>
35 | props.warning ? theme.colors.redDark : theme.colors.blueDark};
36 | background-color: ${theme.colors.white};
37 | line-height: 16px;
38 | padding: 8px;
39 |
40 | &:hover {
41 | background-color: ${theme.colors.greyLight};
42 | cursor: pointer;
43 | }
44 | `;
45 |
46 | export default Menu;
47 |
--------------------------------------------------------------------------------
/react/src/components/MicIcon.jsx:
--------------------------------------------------------------------------------
1 | import styled from "styled-components";
2 | import mic from "../icons/mic.svg";
3 | import simple from "../icons/simple_mic.svg";
4 |
5 | const MicIcon = ({ type = "default" }) => {
6 | const src = type === "default" ? mic : simple;
7 | return ;
8 | };
9 |
10 | const Icon = styled.img``;
11 |
12 | export default MicIcon;
13 |
--------------------------------------------------------------------------------
/react/src/components/MoreIcon.jsx:
--------------------------------------------------------------------------------
1 | import styled from "styled-components";
2 | import more from "../icons/more.svg";
3 | import theme from "../theme";
4 |
5 | const MoreIcon = () => {
6 | return ;
7 | };
8 |
9 | const Icon = styled.img`
10 | background-color: ${theme.colors.white};
11 | padding: 4px;
12 | border-radius: 24px;
13 | `;
14 |
15 | export default MoreIcon;
16 |
--------------------------------------------------------------------------------
/react/src/components/MutedIcon.jsx:
--------------------------------------------------------------------------------
1 | import styled from "styled-components";
2 | import muted from "../icons/muted.svg";
3 | import simple from "../icons/simple_muted.svg";
4 |
5 | const MutedIcon = ({ type = "default" }) => {
6 | const src = type === "default" ? muted : simple;
7 | return ;
8 | };
9 |
10 | const Icon = styled.img``;
11 |
12 | export default MutedIcon;
13 |
--------------------------------------------------------------------------------
/react/src/components/shared/SmallText.js:
--------------------------------------------------------------------------------
1 | import styled from "styled-components";
2 | import theme from "../../theme";
3 |
4 | export const SmallText = styled.p`
5 | font-size: ${theme.fontSize.base};
6 | color: ${theme.colors.greyDark};
7 | font-weight: 400;
8 | margin: ${(props) => props.margin || "12px 0"};
9 | `;
10 |
--------------------------------------------------------------------------------
/react/src/icons/mic.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/react/src/icons/more.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/react/src/icons/muted.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/react/src/icons/simple_mic.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/react/src/icons/simple_muted.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/react/src/index.css:
--------------------------------------------------------------------------------
1 | html {
2 | width: 100%;
3 | height: 100%;
4 | }
5 |
6 | body {
7 | margin: 0;
8 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen",
9 | "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
10 | sans-serif;
11 | -webkit-font-smoothing: antialiased;
12 | -moz-osx-font-smoothing: grayscale;
13 | width: 100%;
14 | height: 100%;
15 | }
16 |
17 | #root {
18 | width: 100%;
19 | height: 100%;
20 | display: flex;
21 | }
22 |
23 | code {
24 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
25 | monospace;
26 | }
27 |
--------------------------------------------------------------------------------
/react/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import './index.css';
4 | import App from './App';
5 | import reportWebVitals from './reportWebVitals';
6 |
7 | ReactDOM.render(
8 |
9 |
10 | ,
11 | document.getElementById('root')
12 | );
13 |
14 | // If you want to start measuring performance in your app, pass a function
15 | // to log results (for example: reportWebVitals(console.log))
16 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
17 | reportWebVitals();
18 |
--------------------------------------------------------------------------------
/react/src/reportWebVitals.js:
--------------------------------------------------------------------------------
1 | const reportWebVitals = onPerfEntry => {
2 | if (onPerfEntry && onPerfEntry instanceof Function) {
3 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
4 | getCLS(onPerfEntry);
5 | getFID(onPerfEntry);
6 | getFCP(onPerfEntry);
7 | getLCP(onPerfEntry);
8 | getTTFB(onPerfEntry);
9 | });
10 | }
11 | };
12 |
13 | export default reportWebVitals;
14 |
--------------------------------------------------------------------------------
/react/src/setupTests.js:
--------------------------------------------------------------------------------
1 | // jest-dom adds custom jest matchers for asserting on DOM nodes.
2 | // allows you to do things like:
3 | // expect(element).toHaveTextContent(/react/i)
4 | // learn more: https://github.com/testing-library/jest-dom
5 | import '@testing-library/jest-dom';
6 |
--------------------------------------------------------------------------------
/react/src/theme.js:
--------------------------------------------------------------------------------
1 | const theme = {
2 | colors: {
3 | blue: "#1f2d3d",
4 | blueDark: "#121a24",
5 | blueLight: "#2b3f56",
6 | cyan: "#00c9df",
7 | cyanDark: "#00a4b7",
8 | cyanLight: "#e2fbfd",
9 | green: "#72cc18",
10 | greenDark: "#62a60f",
11 | greenLight: "#eefae0",
12 | grey: "#c8d1dc",
13 | greyDark: "#6b7785",
14 | greyLight: "#e6eaef",
15 | greyLightest: "#f7f9fa",
16 | orange: "#fb651e",
17 | orangeDark: "#d48200",
18 | orangeLight: "#fef2d8",
19 | red: "#e71115",
20 | redDark: "#bb0c0c",
21 | redLight: "#fddddd",
22 | white: "#ffffff",
23 | turquoise: "#1bebb9",
24 | teal: "#14997a",
25 | },
26 | fontSize: {
27 | small: "11px",
28 | base: "12px",
29 | med: "14px",
30 | large: "16px",
31 | xlarge: "28px",
32 | xxlarge: "32px",
33 | },
34 | fontFamily: {
35 | regular: "Helvetica, Arial, sans-serif",
36 | },
37 | };
38 |
39 | export default theme;
40 |
--------------------------------------------------------------------------------
/react/src/useClickAway.js:
--------------------------------------------------------------------------------
1 | import { useState, useEffect, useRef } from "react";
2 |
3 | export default function useClickAway(initial) {
4 | const [isVisible, setIsVisible] = useState(initial);
5 | const ref = useRef(null);
6 |
7 | const handleHideDropdown = (event) => {
8 | if (event.key === "Escape") {
9 | setIsVisible(false);
10 | }
11 | };
12 |
13 | const handleClickOutside = (event) => {
14 | if (ref.current && !ref.current.contains(event.target)) {
15 | setIsVisible(false);
16 | }
17 | };
18 |
19 | useEffect(() => {
20 | document.addEventListener("keydown", handleHideDropdown, true);
21 | document.addEventListener("click", handleClickOutside, true);
22 | return () => {
23 | document.removeEventListener("keydown", handleHideDropdown, true);
24 | document.removeEventListener("click", handleClickOutside, true);
25 | };
26 | });
27 |
28 | return { ref, isVisible, setIsVisible };
29 | }
30 |
--------------------------------------------------------------------------------
/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daily-demos/party-line/3b923241e1b925291c97d10162b1e97e7f960938/screenshot.png
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 |
--------------------------------------------------------------------------------