ayhan cavdar
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Versions and GitHub Sync Note Insights Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       owned this note    owned this note      
    Published Linked with GitHub
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    # Ayhan Çavdar ## Login (Mobile Related) ### Requirements Fulfilled | No | Requirement | State | | ----- |:------------------------------------------------------------- |:----- | | F-1.2 | New users shall register with a unique username and password. | Done | | F-1.3 | The system shall display warning notifications when the user uses wrong credentials while trying to login. | Done | **Description:** The login feature allows users to access their accounts by entering the username and password they set during registration. Upon successful authentication, users will be directed to the home page. A popup dialog will notify users about the authentication failure in case of incorrect credentials. Additionally, suppose a user doesn't have an account. In that case, a text button will provide a convenient link to navigate to the registration page. **Issues:** [Add bloc architecture for login ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/3) [Create network manager class ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/4) [Add repository pattern for network calls for login page](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/8) [Add login page design](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/14) [Add router class](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/15) [Add popup dialog class](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/17) *The issues below are network related issues. I added them here because we are doing network calls for this feature* [Handle offline state in network calls](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/16) [Add new response format for network calls](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/19) [Network manager code clean-up](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/20) [Add network security config](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/41) **Pull Requests:** [Feature/login](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/9) [Refactor network calls with headers](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/24) [Allow insecure calls for http requests](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/42) **Explanation of the code:** We are using Flutter framework and `Bloc` architecture in the app. `Bloc` is an architecture to differentiate the business logic with the design similar to the `MVVM` architecture. Each feature in the app is foldered under the routes folder and we have bloc files for all the features. We have `bloc`, `model` folders, and `login_route.dart` file for the login feature. The `bloc` folder has three files called `login_bloc.dart`, `login_event.dart` and `login_state.dart`. The `LoginEvent` class contains the user action events of the app, like pressing the button, pressing the text field, etc. The `LoginState` class defines the states of the app. For example, we are displaying display state, loading state, error state, offline state, and success state. The `LoginBloc` class is where we keep our business logic. It manages the network calls and logic when we type in text fields and press the login button. The `model` folder contains the service request and response for the login feature, as well as the `LoginRepository` class extended from the network manager, which allows us to do network calls to our backend service. `login_route.dart` file contains the design of the login page. It draws the design according to the app's state and calls `LoginEvent` if there is a user interaction. **Screenshots:** ![Ekran görüntüsü 2024-01-01 131407](https://hackmd.io/_uploads/H1qaxfeOT.png) ![image](https://hackmd.io/_uploads/rJv2lzg_a.png) ## Create Story (Mobile Related) ### Requirements Fulfilled | No | Requirement | State | |:------ |:-------------------------------------------------------------------------------------------------- |:----- | | F-2.1 | The system shall allow users to create a memory. | Done | | F-2.2 | The system shall require title, text, semantic tags, location and date for each new memory. | Done | | F-2.3 | The system shall allow date entry in the form of decade, year, season, specific date and interval. | Done | | F-2.4 | The system shall allow users to add semantic tags to their memories. | Done | | F-2.5 | The system shall allow users to add photos to their memories. | Done | | F-2.6 | The system shall allow users to remove photos from their memories. | Done | | F-2.12 | The system shall allow users to draw shapes on the map for location. | Done | | F-2.13 | The system shall allow users to label semantic tags. | Done | | F-2.14 | The system shall allow users to label location names | Done | **Description:** The create story feature allows users to create and upload stories to the system. The user can enter the title, content, image, semantic tag, specific location, current location, area locations, line location, date, year, decade, interval year, interval date, time, etc. Semantic tags are the tags from the wiki data. Also, a rich text editor on the create story page allows users to upload images, enter bold texts, etc. Furthermore, the app has an open street map to enable users to draw shapes on the map. **Issues:** [Add create story page](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/56) [Research location map with polygon, point, polyline and circle](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/60) *The issues below are network related issues. I added them here because we are doing network calls for this feature* [Handle offline state in network calls](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/16) [Add new response format for network calls](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/19) [Network manager code clean-up](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/20) [Add network security config](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/41) **Pull Requests:** [Feature/56 create story](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/75) [Add create story design improvements](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/81) **Explanation of the code:** Similarly, the create story feature has the `bloc`, `model` folders, and `create_story_route.dart` file. `bloc` folder contains the `create_story_event.dart`, `create_story_state.dart` and `create_story_bloc.dart` files. The event file keeps the events and user interactions, the state file keeps the app's state, and the bloc file keeps the business logic. In the model folder, we have the models for network requests and responses specific to the create story feature. In the `create_story_route.dart` file, we have the page's design. It contains text, dropdown fields, buttons, a rich text editor, and more. Also, we use the Wikidata semantic tag list. For this, we are making a network call to Wikidata API and showing the results related to the tag the user entered. Also, we have an OpenStreet map, which allows us to show shapes on the map but does not allow us to draw those shapes. For this, we created buttons below the map. The user selects the type of location and presses on the map to create the shape automatically. We also use Google Maps API to generate addresses from the locations. Furthermore, users can enter their real-time location by pressing a button, which takes the device's current location. The user can create a story after all the required fields are provided. A popup dialog will be shown if there is an error or no internet connection. **Screenshots:** ![image](https://hackmd.io/_uploads/Bk4ZtMgup.png) ![image](https://hackmd.io/_uploads/B1_MsGlu6.png) ![image](https://hackmd.io/_uploads/HytQsGg_a.png) ![image](https://hackmd.io/_uploads/Byvvsflda.png) ![image](https://hackmd.io/_uploads/H1EusMxu6.png) ![image](https://hackmd.io/_uploads/Hkal2GguT.png) ## Edit Story (Mobile Related) ### Requirements Fulfilled | No | Requirement | State | |:------ |:--------------------------------------------------------------- |:----- | | F-2.9 | The system shall allow users to edit their memories’ content. | Done | | F-2.17 | The system shall allow users to edit their memories’ title. | Done | | F-2.18 | The system shall allow users to edit their memories’ time. | Done | | F-2.19 | The system shall allow users to edit their memories’ tag. | Done | | F-2.20 | The system shall allow users to edit their memories’ tag label. | Done | | F-2.21 | The system shall allow users to edit their memories’ location. | Done | **Description:** The edit story feature allows users to edit and update their stories in the system. The user can enter the title, content, image, semantic tag, specific location, current location, area locations, line location, date, year, decade, interval year, interval date, time, etc. Semantic tags are the tags from the wiki data. Also, a rich text editor on the edit story page allows users to upload images, enter bold texts, etc. Furthermore, the edit story page has an open street map to enable users to draw shapes on the map. **Issues:** [Implement Edit Story Page](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/98) [Research location map with polygon, point, polyline and circle](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/60) *The issues below are network related issues. I added them here because we are doing network calls for this feature* [Handle offline state in network calls](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/16) [Add new response format for network calls](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/19) [Network manager code clean-up](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/20) [Add network security config](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/41) **Pull Requests:** [Feature/98 edit story](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/100) **Explanation of the code:** The edit story has almost the same logic with the create story. If the reports are the user's stories, the edit icon will be next to the story card. Users will navigate to the edit story page when they press that. Here again, we have `bloc`, `model` folders, and `edit_story_route.dart`. `bloc` folder contains event, state, and bloc files, same as all the features in the app. Event file keeps the user interactions, state file keeps state of the app and bloc file keeps the business logic.`edit_story_route.dart` file has the same design and functionality as the `create_story_route.dart` file. Here, the fields are filled according to the story information, and we have an "Update Story" button instead of "Create Story". **Screenshots:** ![image](https://hackmd.io/_uploads/HyqqXQgua.png) ![image](https://hackmd.io/_uploads/SJ0f77xd6.png) ![image](https://hackmd.io/_uploads/Syh4XXl_a.png) ![image](https://hackmd.io/_uploads/Byyv7Qe_a.png) ![image](https://hackmd.io/_uploads/HkYPXQedT.png) ## Viewing Stories in Home Page (Mobile Related) ### Requirements Fulfilled | No | Requirement | State | |:------ |:---------------------------------------------------------------------------------------------------------------------- |:-------- | | F-2.11 | The system shall allow users to view memories. | Done | | F-2.15 | The system shall allow users to see other's memories on feed page. | Done | **Description:** On the home page, the users should be able to see the stories of the users they are following. Here, the stories are listed as cards. When the user presses an account, the user will be navigated to story details. The card view will show the author, title, time, and location information. **Issues:** [Add bottom navigation bar and landing logic](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/28) [Make bottom bar persistent ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/33) [Keep home page alive after page is changed from bottom nav bar](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/32) [Fetch stories from backend ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/44) [Add pagination logic for loading stories in home page](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/57) *The issues below are network related issues. I added them here because we are doing network calls for this feature* [Handle offline state in network calls](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/16) [Add new response format for network calls](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/19) [Network manager code clean-up](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/20) [Add network security config](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/41) **Pull Requests:** [Add bottom navigation bar and landing logic](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/29) [Make bottom nav bar persistent across pages #33](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/34) [Feature/44 fetch stories ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/58) [Feature/57 home pagination](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/59) **Explanation of the code:** We are using the bloc architecture for the home page as well. we have `bloc`, `model` folders, and `home_route.dart`. `bloc` folder contains event, state, and bloc files, same as all the features in the app. Event file keeps the user interactions, state file keeps state of the app and bloc file keeps the business logic. Here we are doing a network call to fetch the stories from backend. We have pull down to refresh functionality and pagination logic. If the user pulls down the page, we are doing a network call again by calling the `HomeEventRefreshStories` event in the bloc file. For the pagination, we are pulling 5 stories when the home page is first loaded. Then as the page is scrolled, more stories are pulled from the backend with the `HomeEventLoadMoreStory` event in the bloc file. We also have logout button in the app bar. When the user press that `HomeEventPressLogout` event is called in the bloc file. **Screenshots:** ![image](https://hackmd.io/_uploads/B1GQjmldT.png) ![image](https://hackmd.io/_uploads/SkRXiXeuT.png) ## Activity Stream (Mobile Related) ### Requirements Fulfilled | No | Requirement | State | |:----- |:-------------------------------------------------------------------------------------------------- |:----- | | F-3.3 | The system shall display activities of the followed users. | Done | | F-3.4 | Activities shall be sorted by the type such as, like unlike, follow, comment. | Done | | F-3.5 | The system shall redirect user to the memory detail page when the user clicks on the activity box. | Done | **Description:** Implement an Activity Stream page for the mobile application, showcasing various user activities. The page will provide insights into interactions such as follows, unfollows, comments, likes, and new story creations. Additionally, upon tapping an activity, users will be redirected to the target user's profile. Furthermore, a PATCH request will be sent to mark the activity as viewed. **Issues:** [Implement Activity Stream Page](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/96) *The issues below are network related issues. I added them here because we are doing network calls for this feature* [Handle offline state in network calls](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/16) [Add new response format for network calls](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/19) [Network manager code clean-up](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/20) [Add network security config](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/41) **Pull Requests:** [Feature/96 activity stream ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/108) **Explanation of the code:** We are using the bloc architecture for the activity stream page as well. we have `bloc`, `model` folders, and `home_route.dart`. `bloc` folder contains event, state, and bloc files, same as all the features in the app. Event file keeps the user interactions, state file keeps state of the app and bloc file keeps the business logic. Here we are doing a network call to fetch the activites from backend when `ActivityStreamLoadDisplayEvent` is called in bloc file. In `home_route.dart` file, we are displaying the list of activities. When the user presses an activity, we are navigating the user to the target user's profile of that activity by calling `ActivityStreamOnPressActivityEvent` in bloc file. In this event, we are also making a PATCH call to mark the activity as viewed. If an activity is viewed, we are not showing it again in the activity stream page. **Screenshots:** ![image](https://hackmd.io/_uploads/S1_CQNgO6.png) ## Search (Mobile Related) ### Requirements Fulfilled | No | Requirement | State | |:------ |:------------------------------------------------------------------------------------------------------------------ |:----- | | F-6.1 | The system shall have a search function that filters memories. | Done | | F-6.2 | The search function shall filter memories by title. | Done | | F-6.4 | The search function shall filter memories by location. | Done | | F-6.5 | The search function shall filter memories by location point with radius. | Done | | F-6.6 | The search function shall filter memories by specific date. | Done | | F-6.7 | The search function shall filter memories by interval date. | Done | | F-6.8 | The search function shall filter memories by year. | Done | | F-6.9 | The search function shall filter memories by decade. | Done | | F-6.10 | The search function shall filter memories by username. | Done | | F-6.11 | The search function shall filter memories by semantic tags. | Done | | F-6.12 | The search function shall filter memories by semantic tag label. | Done | | F-6.13 | The system shall allow users to see search results as a list by creation date sorted | Done | | F-6.14 | The system shall allow users to see search results as a timeline by memory date sorted | Done | | F-6.15 | The system shall allow users to see search results as a timeline by sorting ascending and descending | Done | | F-6.16 | the system shall redirect user to the timeline when the user clicks on the marker on the map. | Done | | F-6.17 | The system shall redirect user to the memory detail page when the user clicks on the memory boxes on the timeline. | Done | | F-6.18 | On the timeline page, the system shall display a photo if there is any on the memory box | Done | | F-6.19 | The system shall allow users to scroll horizontally on the timeline | Done | | F-6.20 | The system shall display the searched location name on the timeline page | Done | **Description:** Users should be able to search for stories using various parameters, including title, tag, time, author, location, and semantic tag. Below are the key components and features that will be integrated: 1. Location Search: Users can select a location by placing a circle marker on a map. A radius slider and a radius input field will be available, allowing users to customize the search area. Additionally, users can input a location using a text field with Google API integration for efficient geolocation. 2. Search Results Page: The search results will be displayed in a dedicated page called "Search Results." Results can be viewed as either a timeline or a default list in card view. 3. Timeline View: In the timeline tab, each result will be presented in a card format. Card details will include title, author, memory time, and an image if available. 4. List View: The default list view will present search results in a card format for easy browsing. *User Interaction:* Users can seamlessly switch between timeline and list views based on their preference. Location selection and radius adjustments will be intuitive through map interaction and input fields. *Implementation Details:* Utilize Google API for efficient location input. Ensure responsive design for both timeline and list views on various mobile devices. **Issues:** [Implement story search](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/95) *The issues below are network related issues. I added them here because we are doing network calls for this feature* [Handle offline state in network calls](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/16) [Add new response format for network calls](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/19) [Network manager code clean-up](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/20) [Add network security config](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/41) **Pull Requests** [Feature/95 story search](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/104) **Explanation of the code:** We are using the bloc architecture for the search feature as well. We have `bloc`, `model` folders, and `search_story_route.dart` and `search_results_route.dart` files. `bloc` folder contains event, state, and bloc files, same as all the features in the app. The event file keeps the user interactions, the state file keeps the app's state, and the bloc file keeps the business logic. In the `search_story_route.dar`t file, we have input fields for searching the story, like title, author, tags, time, location, etc. We have the same Wikidata API logic for the semantic tag again as they create and edit the story. Again, we have the same reasoning for searching for a location and getting the current location with the create and edit story. Here, for the `search_story_route.dart` page, we only have a radius option for searching in the map. The user selects a location and enters a radius using an input field or slider. When the "Search Stories" button is pressed, we make a backend call with the `SearchStoryEventSearchPressed` event in the bloc. We show a popup if no results are found, an error occurs, or there is no internet connection. If any story is found, we navigate to the `search_results_route.dart` file where the stories can be listed as a timeline or classic list view. If the user presses a story here, we are navigating the user to that story. **Screenshots:** ![image](https://hackmd.io/_uploads/B1FfcEgOT.png) ![image](https://hackmd.io/_uploads/Hkv79Neda.png) ![image](https://hackmd.io/_uploads/HkQS54gOa.png) ![image](https://hackmd.io/_uploads/HJjB9EeOa.png) ## Unit Tests (Mobile Related) ### Requirements Fulfilled | No | Requirement | State | |:----- |:------------------------------------------------------ |:----- | | NF-20 | The system shall has unit tests on mobile application. | Done | **Description:** The unit tests are generated for the mobil app. We are using two types of unit tests. One is called bloc test and the other is golden test. Bloc tests are used to test the business logic of the app. Here we are testing the methods we used for business logic. Golden tests are used to test the UI of the app. It shows the images of the UI in different screen sizes and gets screenshot. **Issues:** [Add bloc tests for login](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/6) [Add golden tests for login](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/7) [Create unit tests for create story feature ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/112) [Create unit tests for edit story feature ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/125) [Create unit tests for search story feature ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/127) [Create unit tests for recommendations ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/129) [Create unit tests for activity stream ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/132) [Create unit tests for landing page ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/135) **Pull Requests:** [Add login bloc tests](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/26) [Add login golden test](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/27) [Feature/112 create story tests](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/124) [Feature/125 edit story tests](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/126) [Feature/127 search story tests](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/128) [Feature/129 recommendations tests](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/131) [Feature/132 activity stream tests](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/134) [Feature/135 landing tests](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/136) **Explanation of the code:** In the bloc tests, to test the logics related to network, we are using `Mock` library to mock the repositories. Here, we are creating mock services, requests and responses. We are also using bloc tests to test the app's current state. For example, we are registering an event and try to test if it gives us the expected state. Finally, we are using bloc tests to test the methods we are using in bloc files. Here the general methodology is to test if the method gives us the expected results for different inputs. The golden tests are much simpler. Here we only test the design of the app in different screen sizes. We are creating mock `MaterialApp`'s here for each screen only showing the desired page with the inputs we gave. Then if there is no overflow or any issue related to UI, it gets the screenshot. For the create and edit story pages, golden tests couldn't get the screenshot of the pages because they were using webview in rich text editor and OpenStreet map. That's why they don't have screenshots. **Screenshots:** ![image](https://hackmd.io/_uploads/Syz1-rx_T.png) *The below images are the results of golden tests, they are under the folder called `golden_test/goldens`* ![image](https://hackmd.io/_uploads/r1QzWrgd6.png) ![image](https://hackmd.io/_uploads/Hyr7Zreu6.png) ![image](https://hackmd.io/_uploads/HJS4-He_a.png) ![image](https://hackmd.io/_uploads/rkjrZrxOa.png) ![image](https://hackmd.io/_uploads/SJaL-Be_6.png) ## Issues (Mobile Related) | Issue | Created by me | Assigned to me | |:----------------------------------------------------------------------------------------------------------------------------------------------- |:------------- |:-------------- | | [Add bloc architecture for login ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/3) | | ✅ | | [Create network manager class ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/4) | | ✅ | | [Add repository pattern for network calls for login page](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/8) | ✅ | ✅ | | [Add login page design](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/14) | ✅ | ✅ | | [Add router class](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/15) | ✅ | ✅ | | [Add popup dialog class](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/17) | ✅ | ✅ | | [Handle offline state in network calls](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/16) | ✅ | ✅ | | [Add new response format for network calls](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/19) | ✅ | ✅ | | [Network manager code clean-up](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/20) | ✅ | ✅ | | [Add network security config](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/41) | ✅ | ✅ | | [Add create story page](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/56) | ✅ | ✅ | | [Research location map with polygon, point, polyline and circle](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/60) | ✅ | ✅ | | [Implement Edit Story Page](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/98) | ✅ | ✅ | | [Research location map with polygon, point, polyline and circle](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/60) | ✅ | ✅ | | [Add bottom navigation bar and landing logic](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/28) | ✅ | ✅ | | [Make bottom bar persistent ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/33) | ✅ | ✅ | | [Keep home page alive after page is changed from bottom nav bar](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/32) | ✅ | ✅ | | [Fetch stories from backend ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/44) | ✅ | ✅ | | [Add pagination logic for loading stories in home page](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/57) | ✅ | ✅ | | [Implement Activity Stream Page](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/96) | ✅ | ✅ | | [Implement story search](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/95) | ✅ | ✅ | | [Add bloc tests for login](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/6) | | ✅ | | [Add golden tests for login](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/7) | | ✅ | | [Create unit tests for create story feature ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/112) | ✅ | ✅ | | [Create unit tests for edit story feature ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/125) | ✅ | ✅ | | [Create unit tests for search story feature ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/127) | ✅ | ✅ | | [Create unit tests for recommendations ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/129) | ✅ | ✅ | | [Create unit tests for activity stream ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/132) | ✅ | ✅ | | [Create unit tests for landing page ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/135) | ✅ | ✅ | | [Implement register page](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/23) | ✅ | ✅ | | [Improve register appbar design](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/39) | ✅ | ✅ | | [Define base route branches in main file ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/45) | ✅ | ✅ | | [Create test coverage output files in pipeline](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/115) | ✅ | ✅ | | [Add initial flutter project for the mobile app](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/2) | | ✅ | | [Set up lint rules](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/5) | | ✅ | | [Add workflow file for CI/CD](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/issues/12) | ✅ | ✅ | ## Issues (Web & Documentation Related) | Issue | Created by me | Assigned to me | |:-------------------------------------------------------------------------------------------------------------------- |:------------- |:-------------- | | [Resolve backend & mobile JWT logic ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1/issues/27) | | ✅ | | [Create Scenarios for Milestone 1](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1/issues/38) | | ✅ | | [Get on the same page](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1/issues/44) | | ✅ | | [Write milestone 1 report](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1/issues/64) | | ✅ | | [Recommendation System Ideas](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1/issues/67) | | ✅ | | [Match mobile and web password requirements](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1/issues/96) | | ✅ | ## Pull Requests (Mobile Related) | Pull request | Author | |:------------------------------------------------------------------------------------------------------------------------------- |:------------ | | [Feature/login](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/9) | Ayhan Çavdar | | [Refactor network calls with headers](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/24) | Ayhan Çavdar | | [Allow insecure calls for http requests](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/42) | Ayhan Çavdar | | [Feature/56 create story](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/75) | Ayhan Çavdar | | [Add create story design improvements](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/81) | Ayhan Çavdar | | [Feature/98 edit story](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/100) | Ayhan Çavdar | | [Add bottom navigation bar and landing logic](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/29) | Ayhan Çavdar | | [Make bottom nav bar persistent across pages](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/34) | Ayhan Çavdar | | [Feature/44 fetch stories ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/58) | Ayhan Çavdar | | [Feature/57 home pagination](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/59) | Ayhan Çavdar | | [Feature/96 activity stream ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/108) | Ayhan Çavdar | | [Feature/95 story search](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/104) | Ayhan Çavdar | | [Add login bloc tests](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/26) | Ayhan Çavdar | | [Add login golden test](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/27) | Ayhan Çavdar | | [Feature/112 create story tests](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/124) | Ayhan Çavdar | | [Feature/125 edit story tests](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/126) | Ayhan Çavdar | | [Feature/127 search story tests](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/128) | Ayhan Çavdar | | [Feature/129 recommendations tests](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/131) | Ayhan Çavdar | | [Feature/132 activity stream tests](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/134) | Ayhan Çavdar | | [Feature/135 landing tests](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/136) | Ayhan Çavdar | | [Add lint rules and make fixes related to linting](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/25) | Ayhan Çavdar | | [Feature/23 register](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/36) | Ayhan Çavdar | | [Improve register appbar design](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/40) | Ayhan Çavdar | | [Feature/45 base route](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/46) | Ayhan Çavdar | | [Feature/55 story details page](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/79) | Ayhan Çavdar | | [Dev->Main #82](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/82) | Ayhan Çavdar | | [Feature/84 profile page](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/99) | Ayhan Çavdar | ## Code Reviews (Mobile Related) I mainly reviewed the pull requests in the mobile repository. Because I was the one who created the base architecture of the app and was most experienced in Flutter, I tried to explain the architecture and make the code suitable to the architecture. I also reviewed pipelines, suggesting adding necessary Flutter commands and testing coverage output using lcov in Flutter. | Pull request | Author | |:------------------------------------------------------------------------------------------------------------------------------------------------------------- |:------------------------- | | [Feature/30 CI/CD for dev](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/31) | Sadık Kuzu | | [Separate CI and CD mobile pipelines #35](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/37) | Sadık Kuzu | | [Dev->Main #14 #12 #19 #15 #17 #16 #20 #5 #6 #7 #28 #30 #23 #33 #35 #21 #39 #41](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/43) | Sadık Kuzu | | [Feature/44 fetch stories ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/58) | Mert Aydın - Ayhan Çavdar | | [Dev->Main #45 #21 #57 #60 #61 #55 #63 #64 #65 #66 #69 #56 #68 #71](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/76) | Sadık Kuzu | | [Feature/55 story details page #78](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/78) | Mert Aydın | | [Feature/55 story details page #79](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/79) | Sadık Kuzu - Ayhan Çavdar | | [Feature/97 Recommendations page](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/102) | Sadık Kuzu | | [Feature/84 profile page](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/103) | Mert Aydın | | [Feature/115 test coverage](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/116) | Sadık Kuzu | | [110-activity-stream-design-improvements ](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/130) | Aykut Kantaş | | [Add commented activity on activity stream](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/133) | Aykut Kantaş | | [Dev->Main #137](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/143) | Sadık Kuzu | | [Feature/113 update backend service url](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1-mobile/pull/114) | Sadık Kuzu | ## Code Reviews (Web Related) | Pull request | Author | |:---------------------------------------------------------------------------------------------------------------- |:----------------- | | [Feature/89 single string error message](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1/pull/90) | Sadık Kuzu | | [Dev->Main #75 #77 #89](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1/pull/93) | Sadık Kuzu | | [Imp/303 update activity stream response](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1/pull/305) | Kemal Caner Ertam | | [Imp/306 add post request to searchstory](https://github.com/SWE574-Fall2023-Group1/SWE574-Fall2023-G1/pull/307) | Kemal Caner Ertam | ## Challenges The challenging part for me was to spare the necessary time for the project. Because I am working on two projects at the company, I only had weekends to study. Also, the backend was incompatible with the mobile project, so I needed to request changes from the backend team. Also, the mobile project was different from the web frontend; we started from scratch and required more coders for the mobile; most of the work was done by me and Mert. Sadık is mostly helping us with repository management, issue tracking, pipelines, and testing at the beginning. Towards the end of the project, Sadık and Aykut helped us by working on some mobile-related issues. So, we worked hard on the mobile project because there were too many things to do.

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully