Giter Site home page Giter Site logo

ios's Introduction

5Calls iOS App

This is the repository for the iOS app for 5Calls.org.

Build Status

Requirements

  • Xcode 13
  • iOS 12

Getting Started

Install the dependencies:

bundle install

Using R.swift

R.swift removes the need to use "stringly typed" resources. Instead, you can reference your app's resources Android-style, which is strongly typed. Benefits are less casting, compile time checking for resources, and a little less code. See examples for each type here.

Note: Since 5Calls uses prototype cells instead of cell nibs, this is all you need to dequeue a cell:

let cell = tableView.dequeueReusableCell(withIdentifier: R.reuseIdentifier.setLocationCell, for: indexPath)!

Vendor the R.swift binary from the latest release (https://github.com/mac-cain13/R.swift/releases) into vendor/rswift if you're getting started with this project for the first time.

Testflight Builds

This currently has to be done by Ben

Install the dependencies:

bundle install

Make sure you have a .env file with the following keys defined:

  • APPLE_ID
  • TEAM_ID
  • ITUNES_CONNECT_TEAM_ID
  • FASTLANE_APPLE_APP_SPECIFIC_PASSWORD

Update the build number manually (for now).

Then run:

fastlane beta

License

This project is released open source under the MIT License. See LICENSE for more details.

Contributors

See the complete list of contributors here: https://github.com/5calls/ios/graphs/contributors

ios's People

Contributors

abizern avatar adamwulf avatar alexanderjrobinson avatar alexargo avatar bengottlieb avatar bjtitus avatar chrisbrandow avatar chrisgoddard avatar cselin avatar dependabot[bot] avatar designatednerd avatar erikkrietsch avatar heathermh avatar iainsmith avatar ianyh avatar indrashan avatar iosjillian avatar kaiquedamato avatar keithgee avatar mccarron avatar melville avatar mergesort avatar musicisamiracle avatar nickoneill avatar nikrad avatar subdigital avatar tomburns avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ios's Issues

Split Congressional District alert with Use My Location option

I'm getting the Split Congressional District alert even when I use the Core Location option in lieu of entering my Zip code. If there's something about my location that makes the lookup unreliable, perhaps the dialog should be reworded?

I can see about collecting some additional info later for you folks.

Setup CI Server

I'd be happy to help get the build going on a CI server. Any preference on what to use? Travis or Buddy Build seem like the most likely candidates.

Fully Transparent Header on Issues List

Not sure why or how this happened, but @nickoneill reported this.

pasted image at 2017_02_09 10_37 pm 1

I thought it was maybe Transparency turned off in Accessibility but that wasn't it. Hopefully someone has seen similar and can help reproduce this one.

[email protected] on build #108: When leaving call feedback on iPad, it's not possible to…

Feedback from [email protected] : When leaving call feedback on iPad, it's not possible to navigate back to the issue detail (in order to choose a different candidate. Also, when you finish making your calls, the issue list isn't updated to reflect the check mark.

CreatedMon Feb 20 2017 02:09:09 GMT+0000 (UTC)
CFBundleShortVersion1.1
CFBundleVersion11
App uptime142.9053
Build108
Device typeiPad Air 2
Device nameBen’s iPad
Screen size1024
Screen size1024px by 768px
Battery54% Unplugged
Memory free44 MB / 1588 MB
Disk free9344 MB / 116397 MB
Network IP192.168.1.78

Link to buddybuild feedback from build 108

After selecting a method of contact, further selections are ignored

You can see this with PR #69 which updates the Method of Contact buttons to reflect previous choices. If I go into a contact, select a method of contact (say, "Unavailable"), exit, and re-enter, if I select a different method, the next time I go back in, "Unavailable" is still selected.

Fix scrollToBottom crash

 # Crashlytics - plaintext stacktrace downloaded by Ben Scheirman at Tue, 07 Feb 2017 19:31:02 GMT
# URL: https://fabric.io/fickle-bits/ios/apps/org.fivecalls.fivecalls-ios/issues/589a1dfb0aeb16625b02e58e/sessions/a65ebab513d945a489e94dc545bba5a0_74e893e8f3e64c04b8d47824b7fa3572_0_v1
# Organization: FICKLE BITS, LLC
# Platform: ios
# Application: 5 Calls
# Version: 1.0 (4)
# Bundle Identifier: org.fivecalls.FiveCalls-ios
# Issue #: 1
# Issue ID: 589a1dfb0aeb16625b02e58e
# Session ID: a65ebab513d945a489e94dc545bba5a0_74e893e8f3e64c04b8d47824b7fa3572_0_v1
# Date: 2017-02-07T19:20:39Z
# OS Version: 10.2.1 (14D27)
# Device: iPhone 6s
# RAM Free: 10.3%
# Disk Free: 15.7%

#0. Crashed: com.twitter.crashlytics.ios.exception
0  FiveCalls                      0x1000c0ec0 CLSProcessRecordAllThreads + 4295577280
1  FiveCalls                      0x1000c0ec0 CLSProcessRecordAllThreads + 4295577280
2  FiveCalls                      0x1000c0d7c CLSProcessRecordAllThreads + 4295576956
3  FiveCalls                      0x1000b152c CLSHandler + 4295513388
4  FiveCalls                      0x1000bef84 __CLSExceptionRecord_block_invoke + 4295569284
5  libdispatch.dylib              0x18ec321bc _dispatch_client_callout + 16
6  libdispatch.dylib              0x18ec3f7f0 _dispatch_barrier_sync_f_invoke + 84
7  FiveCalls                      0x1000bea28 CLSExceptionRecord + 4295567912
8  FiveCalls                      0x1000be85c CLSExceptionRecordNSException + 4295567452
9  FiveCalls                      0x1000be47c CLSTerminateHandler() + 4295566460
10 libc++abi.dylib                0x18e7cf66c std::__terminate(void (*)()) + 16
11 libc++abi.dylib                0x18e7cef84 __cxxabiv1::exception_cleanup_func(_Unwind_Reason_Code, _Unwind_Exception*) + 134
12 libobjc.A.dylib                0x18e7e0690 _objc_exception_destructor(void*) + 362
13 CoreFoundation                 0x18fda908c +[NSException raise:format:] + 102
14 Foundation                     0x19086102c -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 112
15 UIKit                          0x19612fb4c -[UITableViewRowData _assertValidIndexPath:allowEmptySection:] + 904
16 UIKit                          0x19612fbc4 -[UITableViewRowData ensureHeightsFaultedInForIndexPath:availHeight:edgeInset:scrollPosition:] + 84
17 UIKit                          0x195e7b4f8 -[UITableView _contentOffsetForScrollingToRowAtIndexPath:atScrollPosition:] + 1792
18 UIKit                          0x195e7acb0 -[UITableView scrollToRowAtIndexPath:atScrollPosition:animated:] + 52
19 FiveCalls                      0x100095818 IssueDetailViewController.scrollToBottom() -> () (IssueDetailViewController.swift)
20 FiveCalls                      0x100095874 @objc IssueDetailViewController.scrollToBottom() -> () (IssueDetailViewController.swift)
21 FiveCalls                      0x100097334 specialized IssueDetailViewController.(editLocationViewController(EditLocationViewController, didUpdateLocation : UserLocation) -> ()).(closure #1) (IssueDetailViewController.swift)
22 FiveCalls                      0x100096f4c partial apply for IssueDetailViewController.(editLocationViewController(EditLocationViewController, didUpdateLocation : UserLocation) -> ()).(closure #1) (IssueDetailViewController.swift)
23 libdispatch.dylib              0x18ec321fc _dispatch_call_block_and_release + 24
24 libdispatch.dylib              0x18ec321bc _dispatch_client_callout + 16
25 libdispatch.dylib              0x18ec36d68 _dispatch_main_queue_callback_4CF + 1000
26 CoreFoundation                 0x18fd56810 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12
27 CoreFoundation                 0x18fd543fc __CFRunLoopRun + 1660
28 CoreFoundation                 0x18fc822b8 CFRunLoopRunSpecific + 444
29 GraphicsServices               0x191736198 GSEventRunModal + 180
30 UIKit                          0x195cc97fc -[UIApplication _run] + 684
31 UIKit                          0x195cc4534 UIApplicationMain + 208
32 FiveCalls                      0x1000728a4 main (AppDelegate.swift:14)
33 libdispatch.dylib              0x18ec655b8 (Missing)

--

Fatal Exception: NSInternalInconsistencyException
0  CoreFoundation                 0x18fda91b8 __exceptionPreprocess
1  libobjc.A.dylib                0x18e7e055c objc_exception_throw
2  CoreFoundation                 0x18fda908c +[NSException raise:format:]
3  Foundation                     0x19086102c -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:]
4  UIKit                          0x19612fb4c -[UITableViewRowData _assertValidIndexPath:allowEmptySection:]
5  UIKit                          0x19612fbc4 -[UITableViewRowData ensureHeightsFaultedInForIndexPath:availHeight:edgeInset:scrollPosition:]
6  UIKit                          0x195e7b4f8 -[UITableView _contentOffsetForScrollingToRowAtIndexPath:atScrollPosition:]
7  UIKit                          0x195e7acb0 -[UITableView scrollToRowAtIndexPath:atScrollPosition:animated:]
8  FiveCalls                      0x100095818 IssueDetailViewController.scrollToBottom() -> () (IssueDetailViewController.swift)
9  FiveCalls                      0x100095874 @objc IssueDetailViewController.scrollToBottom() -> () (IssueDetailViewController.swift)
10 FiveCalls                      0x100097334 specialized IssueDetailViewController.(editLocationViewController(EditLocationViewController, didUpdateLocation : UserLocation) -> ()).(closure #1) (IssueDetailViewController.swift)
11 FiveCalls                      0x100096f4c partial apply for IssueDetailViewController.(editLocationViewController(EditLocationViewController, didUpdateLocation : UserLocation) -> ()).(closure #1) (IssueDetailViewController.swift)
12 libdispatch.dylib              0x18ec321fc _dispatch_call_block_and_release
13 libdispatch.dylib              0x18ec321bc _dispatch_client_callout
14 libdispatch.dylib              0x18ec36d68 _dispatch_main_queue_callback_4CF
15 CoreFoundation                 0x18fd56810 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
16 CoreFoundation                 0x18fd543fc __CFRunLoopRun
17 CoreFoundation                 0x18fc822b8 CFRunLoopRunSpecific
18 GraphicsServices               0x191736198 GSEventRunModal
19 UIKit                          0x195cc97fc -[UIApplication _run]
20 UIKit                          0x195cc4534 UIApplicationMain
21 FiveCalls                      0x1000728a4 main (AppDelegate.swift:14)
22 libdispatch.dylib              0x18ec655b8 (Missing)

#0. Crashed: com.twitter.crashlytics.ios.exception
0  FiveCalls                      0x1000c0ec0 CLSProcessRecordAllThreads + 4295577280
1  FiveCalls                      0x1000c0ec0 CLSProcessRecordAllThreads + 4295577280
2  FiveCalls                      0x1000c0d7c CLSProcessRecordAllThreads + 4295576956
3  FiveCalls                      0x1000b152c CLSHandler + 4295513388
4  FiveCalls                      0x1000bef84 __CLSExceptionRecord_block_invoke + 4295569284
5  libdispatch.dylib              0x18ec321bc _dispatch_client_callout + 16
6  libdispatch.dylib              0x18ec3f7f0 _dispatch_barrier_sync_f_invoke + 84
7  FiveCalls                      0x1000bea28 CLSExceptionRecord + 4295567912
8  FiveCalls                      0x1000be85c CLSExceptionRecordNSException + 4295567452
9  FiveCalls                      0x1000be47c CLSTerminateHandler() + 4295566460
10 libc++abi.dylib                0x18e7cf66c std::__terminate(void (*)()) + 16
11 libc++abi.dylib                0x18e7cef84 __cxxabiv1::exception_cleanup_func(_Unwind_Reason_Code, _Unwind_Exception*) + 134
12 libobjc.A.dylib                0x18e7e0690 _objc_exception_destructor(void*) + 362
13 CoreFoundation                 0x18fda908c +[NSException raise:format:] + 102
14 Foundation                     0x19086102c -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 112
15 UIKit                          0x19612fb4c -[UITableViewRowData _assertValidIndexPath:allowEmptySection:] + 904
16 UIKit                          0x19612fbc4 -[UITableViewRowData ensureHeightsFaultedInForIndexPath:availHeight:edgeInset:scrollPosition:] + 84
17 UIKit                          0x195e7b4f8 -[UITableView _contentOffsetForScrollingToRowAtIndexPath:atScrollPosition:] + 1792
18 UIKit                          0x195e7acb0 -[UITableView scrollToRowAtIndexPath:atScrollPosition:animated:] + 52
19 FiveCalls                      0x100095818 IssueDetailViewController.scrollToBottom() -> () (IssueDetailViewController.swift)
20 FiveCalls                      0x100095874 @objc IssueDetailViewController.scrollToBottom() -> () (IssueDetailViewController.swift)
21 FiveCalls                      0x100097334 specialized IssueDetailViewController.(editLocationViewController(EditLocationViewController, didUpdateLocation : UserLocation) -> ()).(closure #1) (IssueDetailViewController.swift)
22 FiveCalls                      0x100096f4c partial apply for IssueDetailViewController.(editLocationViewController(EditLocationViewController, didUpdateLocation : UserLocation) -> ()).(closure #1) (IssueDetailViewController.swift)
23 libdispatch.dylib              0x18ec321fc _dispatch_call_block_and_release + 24
24 libdispatch.dylib              0x18ec321bc _dispatch_client_callout + 16
25 libdispatch.dylib              0x18ec36d68 _dispatch_main_queue_callback_4CF + 1000
26 CoreFoundation                 0x18fd56810 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12
27 CoreFoundation                 0x18fd543fc __CFRunLoopRun + 1660
28 CoreFoundation                 0x18fc822b8 CFRunLoopRunSpecific + 444
29 GraphicsServices               0x191736198 GSEventRunModal + 180
30 UIKit                          0x195cc97fc -[UIApplication _run] + 684
31 UIKit                          0x195cc4534 UIApplicationMain + 208
32 FiveCalls                      0x1000728a4 main (AppDelegate.swift:14)
33 libdispatch.dylib              0x18ec655b8 (Missing)

#1. Thread
0  libsystem_kernel.dylib         0x18ed77a88 __workq_kernreturn + 8
1  libsystem_pthread.dylib        0x18ee3b344 _pthread_wqthread + 1452
2  libsystem_pthread.dylib        0x18ee3ad8c start_wqthread + 4

#2. com.apple.uikit.eventfetch-thread
0  libsystem_kernel.dylib         0x18ed59188 mach_msg_trap + 8
1  libsystem_kernel.dylib         0x18ed58ff8 mach_msg + 72
2  CoreFoundation                 0x18fd565d0 __CFRunLoopServiceMachPort + 192
3  CoreFoundation                 0x18fd541ec __CFRunLoopRun + 1132
4  CoreFoundation                 0x18fc822b8 CFRunLoopRunSpecific + 444
5  Foundation                     0x1907bf26c -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 304
6  Foundation                     0x1907dfdd0 -[NSRunLoop(NSRunLoop) runUntilDate:] + 96
7  UIKit                          0x19663dc38 -[UIEventFetcher threadMain] + 136
8  Foundation                     0x1908bce68 __NSThread__start__ + 1024
9  libsystem_pthread.dylib        0x18ee3d850 <redacted> + 240
10 libsystem_pthread.dylib        0x18ee3d760 _pthread_start + 282
11 libsystem_pthread.dylib        0x18ee3ad94 thread_start + 4

#3. Thread
0  libsystem_kernel.dylib         0x18ed77a88 __workq_kernreturn + 8
1  libsystem_pthread.dylib        0x18ee3b344 _pthread_wqthread + 1452
2  libsystem_pthread.dylib        0x18ee3ad8c start_wqthread + 4

#4. com.twitter.crashlytics.ios.MachExceptionServer
0  libsystem_kernel.dylib         0x18ed59188 mach_msg_trap + 8
1  libsystem_kernel.dylib         0x18ed58ff8 mach_msg + 72
2  FiveCalls                      0x1000ac38c CLSMachExceptionServer + 4295492492
3  libsystem_pthread.dylib        0x18ee3d850 <redacted> + 240
4  libsystem_pthread.dylib        0x18ee3d760 _pthread_start + 282
5  libsystem_pthread.dylib        0x18ee3ad94 thread_start + 4

#5. Thread
0  libsystem_kernel.dylib         0x18ed77a88 __workq_kernreturn + 8
1  libsystem_pthread.dylib        0x18ee3b344 _pthread_wqthread + 1452
2  libsystem_pthread.dylib        0x18ee3ad8c start_wqthread + 4

#6. Thread
0  libsystem_pthread.dylib        0x18ee3ad88 pthread_workqueue_addthreads_np + 126

#7. com.apple.NSURLConnectionLoader
0  libsystem_kernel.dylib         0x18ed59188 mach_msg_trap + 8
1  libsystem_kernel.dylib         0x18ed58ff8 mach_msg + 72
2  CoreFoundation                 0x18fd565d0 __CFRunLoopServiceMachPort + 192
3  CoreFoundation                 0x18fd541ec __CFRunLoopRun + 1132
4  CoreFoundation                 0x18fc822b8 CFRunLoopRunSpecific + 444
5  CFNetwork                      0x190487a70 <redacted> + 336
6  Foundation                     0x1908bce68 __NSThread__start__ + 1024
7  libsystem_pthread.dylib        0x18ee3d850 <redacted> + 240
8  libsystem_pthread.dylib        0x18ee3d760 _pthread_start + 282
9  libsystem_pthread.dylib        0x18ee3ad94 thread_start + 4


Fastlane setup

Thinking ahead, I'd like to get fastlane setup to automatically manage some of the tedium around distribution.

For now, a task to build & submit to Testflight would be a good first step.

Show Representatives when present on Issue Detail Screen

Data looks like this:

{
  "id":"TX-JohnCornyn",
  "name":"John Cornyn",
  "phone":"202-224-2934",
  "photoURL":"http://bioguide.congress.gov/bioguide/photo/C/C001056.jpg",
  "party":"Republican",
  "state":"TX",
  "reason":"This is one of your two senators",
  "area":"Senate"
}

This is already parsed into the Contact struct.

Show the contact information for the first contact (or random?) as well as the issue script. Looks like this:

Buttons to report the outcome of the call:

  • Unavailable
  • Left Voicemail
  • Made Contact
  • Skip

Issue Detail doesn't always show Contacts after setting Zipcode

On a fresh install sometimes the Issues Detail screen doesn't show the contacts after setting the location from the Issues Detail screen.

I don't think this bug needs to be fixed for 1.0 as I can't reproduce it reliably.

Partial Steps To Reproduce:

  1. Delete app and install fresh
  2. Launch app and get through tutorial
  3. Open random issue
  4. Scroll to bottom to touch the "Set your location..." red text to open the Location Edit screen
  5. Enter a zip code and hit SUBMIT

Instead of your Reps you'll sometimes see the "Set your location..." text again.

To get this I did Steps 3 & 4 a few times but exiting the location screen before actually entering it and got it to reproduce. May be related to that sequence.

Add phone numbers for local offices

I often call my representatives' local offices for a few reasons:

  • They're open later locally due to the time zone difference.
  • Sometimes when the DC office voice mailbox is full, the local office's mailbox will not be (and vice versa).

It would be nice if 5Calls would show all office numbers for each representative, not just the DC offices. Not sure if the API being used provides this info.

[email protected] on build #108: Possible to have blur w/ this header in split view?

Feedback from [email protected] : Possible to have blur w/ this header in split view?

CreatedMon Feb 20 2017 02:12:00 GMT+0000 (UTC)
CFBundleShortVersion1.1
CFBundleVersion11
App uptime317.3621
Build108
Device typeiPad Air 2
Device nameBen’s iPad
Screen size1024
Screen size1024px by 768px
Battery53% Unplugged
Memory free60 MB / 1586 MB
Disk free9341 MB / 116397 MB
Network IP192.168.1.78

Link to buddybuild feedback from build 108

Change app font to Roboto

In matching the style of the website, I'd like to embed the Roboto font and use it where appropriate.

Definitely for the copy in the walkthrough, but probably for all labels, buttons, view controller titles, etc. (we can probably accomplish most of this w/ appearance proxies).

Here's a link on how to embed fonts on iOS.

My Impact

Use the stats we're collecting from ContactLogs to build the My Impact screen (launched via the footer button).

Here's the Android equivalent:

Save location by zip code

Tap Edit Location, type a zip.

Zip code is validated (5-digits for now) and saved to UserDefaults.

  • trigger a refresh (via notification or callback) when it changes
  • IssuesViewController reads the saved and passes to the fetch operation when loading issues.
  • location button title should be changed to match the selected zip code

README

Need README with:

  • link to main site
  • development dependencies
  • setup instructions
  • contribution guidelines
  • license

Support Field Offices

The API was just updated to include field offices for contacts. It currently looks like this:

                {
                    "area": "Senate",
                    "field_offices": [
                        {
                            "city": "Central Texas",
                            "phone": "512-916-5834"
                        },
                        {
                            "city": "East Texas",
                            "phone": "903-593-5130"
                        },
                        {
                            "city": "North Texas",
                            "phone": "214-599-8749"
                        },
                        {
                            "city": "South Texas",
                            "phone": "956-686-7339"
                        },
                        {
                            "city": "South/Central Texas",
                            "phone": "210-340-2885"
                        },
                        {
                            "city": "Southeast Texas",
                            "phone": "713-718-3057"
                        }
                    ],
                    "id": "TX-TedCruz",
                    "name": "Ted Cruz",
                    "party": "Republican",
                    "phone": "202-224-5922",
                    "photoURL": "http://www.cruz.senate.gov/files/images/OfficialPortrait.jpg",
                    "reason": "This is one of your two senators",
                    "state": "TX"
                }

We need a similar mechanism for choosing which number to call on the CallScriptViewController

Messaging for first call

I'd like to add a one-time alert when the user calls to give them some quick instructions about the need to double-tap & come back so they can read the script.

First time user calls, present an alert:

We're about to place the call. When it starts dialing, turn on Speaker phone, then double tap the home button come back to this app so you can read the script.

OK, Got it | Cancel

When we press this button:

  • Save an entry in user defaults so we know not to present this alert again
  • Call the system dialer

Save location by GPS

Tap Edit Location, tap "Use My Location".

  • prompt to use location w/ CLLocationManager
  • on callback, use lat/lng and reverse geocode to get address
  • save these values to UserDefaults, preferrably under a single key w/ a dictionary value
  • clear any saved zip code
  • trigger a refresh (via notification or callback) when upon change
  • IssuesViewController reads the saved location / address and passes to the fetch operation when loading issues.
  • location button title should be changed to match the city from the saved location

Reporting outcome of a call

HTTP POST to /report including

  • result (must be one of 'unavailable', 'vm', 'contacted')
  • contact id
  • issue id

Then save to local persistence (a plist, or maybe Pantry? 😄 ) the outcome of this issue.

Issues that have a saved result show up w/ a green checkmark on the issues list. This can be done in IssuesViewController by setting the isChecked flag on IssueCell.

Weird image caching issue

Pretty sure that is NOT Tammy Duckworth's picture:

screen shot 2017-02-20 at 5 31 27 am

(note: iPad isn't doing anything funky in this view, so it's doubtful this is an iPad-related bug, but not, of course, impossible.)

Dynamic height rows seems to cause the issues list to shuffle

I noticed that once we supported dynamic height on the issues list, the table reshuffles strangely when scrolling.

Another (probably related) thing is this occasionally causes our labels to no longer wrap & cause their cell to increase in height, instead reverting to truncating with ellipses ('...').

Smaller Screen Issues

  • Welcome Screens don't fully fit on an iPhone 4S and SE
  • Location Screen doesn't fit an iPhone 4S

simulator screen shot feb 10 2017 9 14 44 am
simulator screen shot feb 10 2017 9 12 01 am
pasted image at 2017_02_09 10_37 pm

Beta Feedback

Some feedback from the slack channel:

  • "What's important to you?" header on issues list
  • On the issue page before location is set, don't show the "Call your representatives" header. Consider using the ghost text from the location box on the web in place of "Set location".
  • The share issue button in the top right was no op for me.
  • Left aligning the issue title will look better with this layout
  • The background color for the reps under the choose a rep header is pretty dark, consider using the same background that is behind the header or that you're using in the list view

Settings / About screen

Want to include:

  • 5calls organizers / creators
  • 5calls iOS contributors
  • any open source projects used
  • feedback link
  • rate app link

Not quite sure where to surface the button for this, maybe a tiny (i) button in the header? Open to suggestions.

Load contact photos

Right now we have static images for the contacts. Need to remotely load in images for the contact cell and the CallScriptViewController

Show Checkmark On Call Script Screen

There is no indicator on that screen to show if you've contacted that contact or not.

One suggestion is a CheckboxView in a titleView along with Contact X of Y.

[email protected] on build #108: This button doesn't feel like a button (no tint color, no…

Feedback from [email protected] : This button doesn't feel like a button (no tint color, no change in color when tapped)

CreatedMon Feb 20 2017 02:34:38 GMT+0000 (UTC)
CFBundleShortVersion1.1
CFBundleVersion11
App uptime1671.638
Build108
Device typeiPad Air 2
Device nameBen’s iPad
Screen size1024
Screen size1024px by 768px
Battery49% Unplugged
Memory free55 MB / 1558 MB
Disk free9338 MB / 116397 MB
Network IP192.168.1.78

Link to buddybuild feedback from build 108

Record stats

Need to record:

  • date/time of call
  • result
  • save contact id, issue id, and number used

This will be used to provide info for a screen called "My Impact", as well as possibly serve future efforts to determine which numbers get through the most, etc.

Extract strings in preparation for localization

Currently the app uses hard-coded strings. We're prepping to localize everything into some other languages. The first step is to extract the strings in the app into strings files so we can hand these off to translators.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.