Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
448 changes: 447 additions & 1 deletion Blink/Blink.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

57 changes: 57 additions & 0 deletions Blink/Blink/Brainstorming/ViewModels/BrainstormingViewModel.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
//
// BrainstormingViewModel.swift
// Blink
//
// Created by Edgar Sgroi on 08/07/20.
// Copyright © 2020 Artur Carneiro. All rights reserved.
//

import Foundation
import MultipeerConnectivity

class BrainstormingViewModel: NSObject, MCSessionDelegate {

let multipeerConnection = Multipeer.shared

var ideas: [String]

override init() {
ideas = []
super.init()
multipeerConnection.delegate = self
}
}

extension BrainstormingViewModel: MCSessionDelegate {
func session(_ session: MCSession, peer peerID: MCPeerID, didChange state: MCSessionState) {
switch state {
case MCSessionState.connected:
multipeerConnection.connectionStatus = .connected
case MCSessionState.connecting:
multipeerConnection.connectionStatus = .connecting
case MCSessionState.notConnected:
multipeerConnection.connectionStatus = .notConnected
@unknown default:
multipeerConnection.connectionStatus = .unknown
}
}

func session(_ session: MCSession, didReceive data: Data, fromPeer peerID: MCPeerID) {
if let text = String(data: data, encoding: .utf8) {
DispatchQueue.main.async {
if !self.ideas.contains(text) {
self.ideas.append(text)
}
}
}
}

func session(_ session: MCSession, didReceive stream: InputStream, withName streamName: String, fromPeer peerID: MCPeerID) {
}

func session(_ session: MCSession, didStartReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, with progress: Progress) {
}

func session(_ session: MCSession, didFinishReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, at localURL: URL?, withError error: Error?) {
}
}
53 changes: 53 additions & 0 deletions Blink/Blink/Menu/ViewModels/MenuViewModel.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
//
// MenuViewModel.swift
// Blink
//
// Created by Edgar Sgroi on 08/07/20.
// Copyright © 2020 Artur Carneiro. All rights reserved.
//

import Foundation
import MultipeerConnectivity

class MenuViewModel: NSObject, MCSessionDelegate {

let multipeerConnection = Multipeer.shared

override init() {
super.init()
multipeerConnection.delegate = self
}

func startHosting(action: UIAlertAction!) {
multipeerConnection.mcAdvertiserAssistant = MCAdvertiserAssistant(serviceType: "blnk", discoveryInfo: nil, session: multipeerConnection.mcSession)
multipeerConnection.mcAdvertiserAssistant.start()
print("You are hosting now!")
}
}

extension MenuViewModel: MCSessionDelegate {
func session(_ session: MCSession, peer peerID: MCPeerID, didChange state: MCSessionState) {
switch state {
case MCSessionState.connected:
multipeerConnection.connectionStatus = .connected
case MCSessionState.connecting:
multipeerConnection.connectionStatus = .connecting
case MCSessionState.notConnected:
multipeerConnection.connectionStatus = .notConnected
@unknown default:
multipeerConnection.connectionStatus = .unknown
}
}

func session(_ session: MCSession, didReceive data: Data, fromPeer peerID: MCPeerID) {
}

func session(_ session: MCSession, didReceive stream: InputStream, withName streamName: String, fromPeer peerID: MCPeerID) {
}

func session(_ session: MCSession, didStartReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, with progress: Progress) {
}

func session(_ session: MCSession, didFinishReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, at localURL: URL?, withError error: Error?) {
}
}
38 changes: 38 additions & 0 deletions Blink/Blink/Multipeer.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
//
// Multipeer.swift
// Blink
//
// Created by Edgar Sgroi on 08/07/20.
// Copyright © 2020 Artur Carneiro. All rights reserved.
//

import Foundation
import MultipeerConnectivity

enum ConnectionStatus {
case connected
case connecting
case notConnected
case unknown
}

class Multipeer: NSObject {

static let shared = Multipeer()

var peerID: MCPeerID
var mcSession: MCSession
var mcAdvertiserAssistant: MCAdvertiserAssistant

var connectionStatus: ConnectionStatus
var delegate: MCSessionDelegate?

override init() {
peerID = MCPeerID(displayName: UIDevice.current.name)
mcSession = MCSession(peer: peerID, securityIdentity: nil, encryptionPreference: .required)
connectionStatus = .notConnected
mcAdvertiserAssistant = MCAdvertiserAssistant(serviceType: "blnk", discoveryInfo: nil, session: mcSession)
super.init()

}
}
45 changes: 45 additions & 0 deletions Blink/Blink/Voting/ViewModel/VotingViewModel.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
//
// VotingViewModel.swift
// Blink
//
// Created by Edgar Sgroi on 08/07/20.
// Copyright © 2020 Artur Carneiro. All rights reserved.
//

import Foundation
import MultipeerConnectivity

class VotingViewModel: NSObject, MCSessionDelegate {

let multipeerConnection = Multipeer.shared

override init() {
super.init()
multipeerConnection.delegate = self
}

func session(_ session: MCSession, peer peerID: MCPeerID, didChange state: MCSessionState) {
switch state {
case MCSessionState.connected:
multipeerConnection.connectionStatus = .connected
case MCSessionState.connecting:
multipeerConnection.connectionStatus = .connecting
case MCSessionState.notConnected:
multipeerConnection.connectionStatus = .notConnected
@unknown default:
multipeerConnection.connectionStatus = .unknown
}
}

func session(_ session: MCSession, didReceive data: Data, fromPeer peerID: MCPeerID) {
}

func session(_ session: MCSession, didReceive stream: InputStream, withName streamName: String, fromPeer peerID: MCPeerID) {
}

func session(_ session: MCSession, didStartReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, with progress: Progress) {
}

func session(_ session: MCSession, didFinishReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, at localURL: URL?, withError error: Error?) {
}
}
37 changes: 37 additions & 0 deletions Blink/Blink_iOS/AppDelegate.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
//
// AppDelegate.swift
// Blink_iOS
//
// Created by Edgar Sgroi on 08/07/20.
// Copyright © 2020 Artur Carneiro. All rights reserved.
//

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {



func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return true
}

// MARK: UISceneSession Lifecycle

func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
// Called when a new scene session is being created.
// Use this method to select a configuration to create the new scene with.
return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
}

func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
// Called when the user discards a scene session.
// If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
// Use this method to release any resources that were specific to the discarded scenes, as they will not return.
}


}

98 changes: 98 additions & 0 deletions Blink/Blink_iOS/Assets.xcassets/AppIcon.appiconset/Contents.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
{
"images" : [
{
"idiom" : "iphone",
"scale" : "2x",
"size" : "20x20"
},
{
"idiom" : "iphone",
"scale" : "3x",
"size" : "20x20"
},
{
"idiom" : "iphone",
"scale" : "2x",
"size" : "29x29"
},
{
"idiom" : "iphone",
"scale" : "3x",
"size" : "29x29"
},
{
"idiom" : "iphone",
"scale" : "2x",
"size" : "40x40"
},
{
"idiom" : "iphone",
"scale" : "3x",
"size" : "40x40"
},
{
"idiom" : "iphone",
"scale" : "2x",
"size" : "60x60"
},
{
"idiom" : "iphone",
"scale" : "3x",
"size" : "60x60"
},
{
"idiom" : "ipad",
"scale" : "1x",
"size" : "20x20"
},
{
"idiom" : "ipad",
"scale" : "2x",
"size" : "20x20"
},
{
"idiom" : "ipad",
"scale" : "1x",
"size" : "29x29"
},
{
"idiom" : "ipad",
"scale" : "2x",
"size" : "29x29"
},
{
"idiom" : "ipad",
"scale" : "1x",
"size" : "40x40"
},
{
"idiom" : "ipad",
"scale" : "2x",
"size" : "40x40"
},
{
"idiom" : "ipad",
"scale" : "1x",
"size" : "76x76"
},
{
"idiom" : "ipad",
"scale" : "2x",
"size" : "76x76"
},
{
"idiom" : "ipad",
"scale" : "2x",
"size" : "83.5x83.5"
},
{
"idiom" : "ios-marketing",
"scale" : "1x",
"size" : "1024x1024"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
6 changes: 6 additions & 0 deletions Blink/Blink_iOS/Assets.xcassets/Contents.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}
25 changes: 25 additions & 0 deletions Blink/Blink_iOS/Base.lproj/LaunchScreen.storyboard
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" xcode11CocoaTouchSystemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
</scene>
</scenes>
</document>
Loading