Christopher Bell
Christopher Bell
  • Видео 93
  • Просмотров 95 127
How to keep appsettings.json out of GitHub
Preventions: How to keep appsettings.json out of GitHub
Cure: how to remove appsettings'json from GitHub if you have committed it in error.
00:00 - Introduction
01:00 - Prevention
06:04 - Cure - Setting the Scene
08:55 - Cure - Removing appsettings from GitHub
12:28 - Summary
Resources:
Blog post: blazorcode.uk/aviation/keep-appsettings-out-of-github/
Git Bash: git-scm.com/downloads
Просмотров: 182

Видео

Can You Keep a Secret? Linking a Blazor app to Azure Key Vault
Просмотров 2243 месяца назад
How and where to keep secrets, such as connection strings, API keys, product licence keys, etc. in a Blazor application. The dangers of storing secrets in appsettings.json and why secrets.json won't work for production. The solution to these problems is Azure Key Vault. How to set up an Azure Key Vault and link a Blazor app to it, including publishing the app to Azure Web Services. Resources: B...
Blazor Render Modes in .NET 8 and which Web App Template to choose
Просмотров 1,4 тыс.4 месяца назад
.NET 8 introduced new render modes for Blazor, and with them a new Web App template in Visual Studio 2022. Here we look at all render modes and the choices for 'Interactive render mode' and 'Interactivity location' when creating a new Blazor project. We also look at how to turn pre-rendering off. References: Blog Post: blazorcode.uk/aviation/blazor-render-modes/
Blazor Wall Area Calculator - 08 - Deductions Grid
Просмотров 1034 месяца назад
Adding an extra grid to display areas that don't require tiling, such as doors and windows, and showing how the net area of a wall can be calculated by deducting these areas from the gross area of the wall. The important consideration is the updating of the wall grid to reflect changes to deductions. Resources: Documentation: blazorcode.uk/wallareacalculator/index-page-deductions/ Code: blazorc...
Cascading Grids in Blazor - Part 7a - There's a bug!
Просмотров 1095 месяцев назад
After publishing Part 7 on how to create a dynamic dialog, using Syncfusion controls, I discovered to my horror that I had omitted a few lines of code that made the dialog behave very strangely. This video explains the problem and corrects that omission. Resources Documentation: blazorcode.uk/wallareacalculator/index-page-dynamic-dialog Code: blazorcode.uk/wallareacalculator/index-page-dynamic-...
Cascading Grids in Blazor - Part 7 - A Dynamic Dialog
Просмотров 1646 месяцев назад
Creating a dynamic dialog that reacts to an input from a drop-down list. Also covered are area calculations and rounding. Resources: Documentation: blazorcode.uk/wallareacalculator/index-page-dynamic-dialog Code: blazorcode.uk/wallareacalculator/index-page-dynamic-dialog-code GitHub: github.com/ChristopherJBell/BlazorWallAreaCalculator/releases/tag/v7.0.0 Syncfusion Community Licence: www.syncf...
Cascading Grids in Blazor - Part 6 - Linking Data Grids
Просмотров 1798 месяцев назад
A Home page with a drop-down list that links to a parent grid, which, in turn, links to a child grid on selection of a row in the parent grid. The grids have 'Add', 'Edit' and 'Delete' toolbar items displaying appropriate dialog boxes for CRUD operations. Playlist for Cascading Grids: ruclips.net/p/PL9z-AbTNWcYH0Cg78spBt0yGlr_xDzIQ5 Resources: Documentation: blazorcode.uk/wallareacalculator/ind...
Cascading Grids in a Blazor Application - Part 5 - Home Page with Dropdown list and Grid
Просмотров 2298 месяцев назад
Creating a Home page with a drop-down list that links to a grid, restricting grid rows to items for the selected dropdown list entry. The grid will have 'Add', 'Edit' and 'Delete' toolbar items displaying appropriate dialog boxes for data manipulation. Playlist for Cascading Grids: ruclips.net/p/PL9z-AbTNWcYH0Cg78spBt0yGlr_xDzIQ5 Resources: Documentation: blazorcode.uk/wallareacalculator/index-...
Cascading Grids in a Blazor Application - Part 4 - Project Page
Просмотров 2469 месяцев назад
Adding a page to add, edit and delete records in a Blazor application using Syncfusion grid and dialog controls, including code for a toolbar click handler and row select handler. Playlist for Cascading Grids: ruclips.net/p/PL9z-AbTNWcYH0Cg78spBt0yGlr_xDzIQ5 Resources: Documentation: blazorcode.uk/wallareacalculator/projects-page/index.html Github Release: github.com/ChristopherJBell/BlazorWall...
Cascading Grids in a Blazor Application - Part 3 - Basic CRUD service & interface
Просмотров 2489 месяцев назад
In part 3 of this series we look at adding the service and interface classes for basic CRUD operations for a SQLite database using Dapper. Playlist for Cascading Grids: ruclips.net/p/PL9z-AbTNWcYH0Cg78spBt0yGlr_xDzIQ5 Resources: Blog post and source code: blazorcode.uk/wallareacalculator/basic-crud/ AddScoped, AddTransient or AddSingletone: www.reddit.com/r/csharp/comments/utwn1n/scoped_vs_tran...
Cascading Grids in a Blazor Application - Part 2
Просмотров 2959 месяцев назад
A Blazor application demonstrating the use of cascading grids. This is part 2 of a series that takes a step by step approach in creating a Blazor application that will calculate the total wall area of a room. In this video we install DB Browser for SQLite and add the database and tables (using a script). Back in the C# project we add a connection string to link the data to the project and final...
Cascading Grids in a Blazor Application - Part 1
Просмотров 7459 месяцев назад
A Blazor application demonstrating the use of cascading grids. This is part 1 of a series that takes a step by step approach in creating a Blazor application that will calculate the total wall area of a room. We will use C# in Visual Studio, Syncfusion controls, SQLite and Dapper. Playlist for Cascading Grids: ruclips.net/p/PL9z-AbTNWcYH0Cg78spBt0yGlr_xDzIQ5 Resources: Documentation: blazorcode...
How to create a personal, or household, cash flow forecast using Microsoft Excel.
Просмотров 617Год назад
How to create a personal, or household, cash flow forecast using Microsoft Excel. A daily balance is calculated, together with a weekly summary showing closing balances and minimum balance throughout the week. An explanation of the key formulae is given. Chapters: 00:00 - Introduction & Example Cash Flow Forecast 05:15 - How to create the Cash Flow Forecast in Excel 21:55 - The formulae explain...
A Beginners' Guide to Blazor WebAssembly - Tidying up and Navigation Lock
Просмотров 226Год назад
Tidying up the app so the user is presented with a visually appealing and consistent interface. How to add 'Navigation Lock', a new feature of .NET 7 that can be used to prevent the user navigating away from the application and losing unsaved data, Useful links: Video script & code: blazorcode.uk/countriesandcitieswasm/tidying-up/ Steve Sanderson - NavigationLock: ruclips.net/video/evW4Gj4sHsk/...
A Beginners' Guide to Blazor WebAssembly - Data validation and preventing duplicates
Просмотров 226Год назад
Data validation in a Blazor WebAssembly application using Data Annotations, plus how to prevent duplicate records getting added to the database. Useful links: Video script & code: blazorcode.uk/countriesandcitieswasm/data-validation/ Data Annotations examples: www.codemag.com/Article/2301031/The-Rich-Set-of-Data-Annotation-and-Validation-Attributes-in-.NET A Practical Guide to Dapper: www.red-g...
A Beginners' Guide to Blazor WebAssembly - Add, edit & delete child records
Просмотров 384Год назад
A Beginners' Guide to Blazor WebAssembly - Add, edit & delete child records
A Beginners' Guide to Blazor WebAssembly - One to Many
Просмотров 402Год назад
A Beginners' Guide to Blazor WebAssembly - One to Many
A Beginners' Guide to Blazor WebAssembly - Preventing Duplicate Records
Просмотров 244Год назад
A Beginners' Guide to Blazor WebAssembly - Preventing Duplicate Records
A Beginners' Guide to Blazor WebAssembly - CRUD Operations
Просмотров 1,1 тыс.Год назад
A Beginners' Guide to Blazor WebAssembly - CRUD Operations
A Beginners' Guide to Blazor WebAssembly - Adding SQLite & Dapper
Просмотров 2,4 тыс.Год назад
A Beginners' Guide to Blazor WebAssembly - Adding SQLite & Dapper
A Beginners' Guide to Blazor WebAssembly - Adding Syncfusion Controls - they're free!
Просмотров 698Год назад
A Beginners' Guide to Blazor WebAssembly - Adding Syncfusion Controls - they're free!
A Beginners' Guide to Blazor WebAssembly - Displaying a List
Просмотров 918Год назад
A Beginners' Guide to Blazor WebAssembly - Displaying a List
A Beginners' Guide to Blazor WebAssembly - An Introduction & Getting Started
Просмотров 1,8 тыс.Год назад
A Beginners' Guide to Blazor WebAssembly - An Introduction & Getting Started
Marcos Snippets 1995
Просмотров 222Год назад
Marcos Snippets 1995
How to customize Azure AD B2C login
Просмотров 6 тыс.2 года назад
How to customize Azure AD B2C login
Birthday Reminders - Postscript - Don't Repeat Yourself - Dependency Injection
Просмотров 1492 года назад
Birthday Reminders - Postscript - Don't Repeat Yourself - Dependency Injection
How to create a Birthday Reminders application using Blazor Server, C# and SQLite.
Просмотров 8852 года назад
How to create a Birthday Reminders application using Blazor Server, C# and SQLite.
Birthday Reminders - 16 - Deploy Blazor Server App to Azure & Migrate SQL Database
Просмотров 9372 года назад
Birthday Reminders - 16 - Deploy Blazor Server App to Azure & Migrate SQL Database
Birthday Reminders - 15 - Restricting access to records by user login
Просмотров 2152 года назад
Birthday Reminders - 15 - Restricting access to records by user login
Birthday Reminders - 14 - Restricting access to menu items by user login
Просмотров 2012 года назад
Birthday Reminders - 14 - Restricting access to menu items by user login

Комментарии

  • @ppk11654
    @ppk11654 4 дня назад

    Your detailed video explanation has always been my guide to Blazor. Thank you.

  • @gunnypaulgiles
    @gunnypaulgiles 5 дней назад

    What if the new upgrade does not allow the addition and use of a Data folder in the server?

    • @christopherbell7186
      @christopherbell7186 4 дня назад

      I haven't tried to reproduce the application presented in this video in .NET 8.0, so cannot be absolutely sure, but I have created Blazor Web Apps with .NET 8.0 where I have been able to create a Data folder in the server project and place a SQLite database in it. Are you sure you can't create a Data folder in the server project?

  • @mcclausky
    @mcclausky 18 дней назад

    Excellent and detailed comparison! Thank you so much.

  • @lassemidt
    @lassemidt Месяц назад

    Thanks for a good explanation/comparison of the different template settings 🙂

  • @andrewmooweek1367
    @andrewmooweek1367 Месяц назад

    Is it possible to change title "Sign in with your email address". I don't know how becouse it's provided by <div id="api"></div> ?

    • @christopherbell7186
      @christopherbell7186 Месяц назад

      It is possible, but doesn't look particularly easy. Here is a RUclips video with instructions: ruclips.net/video/Bs3GjMXZnE0/видео.html or this: ruclips.net/video/ZF5ZsJBp54A/видео.html Good luck!

  • @scoroop
    @scoroop 2 месяца назад

    thank you for doing my homework :). it was a perfect explanation, I find it extremely useful!

  • @espinosavergaradaviddaniel9359
    @espinosavergaradaviddaniel9359 2 месяца назад

    Excuse me, thats a blazor server app? Or wasm. Server-client no because i dont see the both sides.

    • @christopherbell7186
      @christopherbell7186 2 месяца назад

      This project was created some time ago and was, indeed, a Blazor Server project, built using .NET 5. I haven't updated for .NET 8, so trying to recreate now will involve some changes,

  • @HoseinPhotoshop
    @HoseinPhotoshop 2 месяца назад

    Hi I designed a cover for this video I recorded the screen while designing the thumbnail, and the video is in my channel. How can I send you thumbnail image?

  • @saroshwadia
    @saroshwadia 2 месяца назад

    Nice one 👍

    • @christopherbell7186
      @christopherbell7186 2 месяца назад

      Thanks ✌️

    • @saroshwadia
      @saroshwadia 2 месяца назад

      @@christopherbell7186 Any chance of creating a video on Blazor 8 Authentication/Authorization for Server/WASM but not using Identity but a CustomAuthenticationStateProvider?

    • @christopherbell7186
      @christopherbell7186 2 месяца назад

      Sorry, I don't think I'm going to be able to help on this subject... I might investigate Azure B2C with Blazor .NET 8 in the future though.

    • @saroshwadia
      @saroshwadia 2 месяца назад

      @@christopherbell7186 That sounds good too 🙂Thx

  • @mtranchi
    @mtranchi 2 месяца назад

    ty!

  • @mrt7948
    @mrt7948 3 месяца назад

    syncfusion is a bad choice, their marketing people disturbs too much, and the demo version keeps giving too many errors.

    • @christopherbell7186
      @christopherbell7186 3 месяца назад

      Thanks for your comment. I don't receive any sponsorship from Syncfusion (or any other organisation), but for small developers it's free. I'm open to other suggestions...

  • @Duelweb
    @Duelweb 3 месяца назад

    Chris, please keep your Blazor vidoes coming. I follow your channel religiously, and know that if you published often, your subs would rocket. You explain things so clearly. I have a radar alert set for your posts, they are always to the point and cover very useful topics. Christopher Bell for President!

    • @christopherbell7186
      @christopherbell7186 3 месяца назад

      Thank you so much! I am very pleased you find my videos interesting and helpful.

  • @JohnSmith-yr7ih
    @JohnSmith-yr7ih 3 месяца назад

    can you please make a tutorial of aspNet web api + Blazor webassembly (not a `BlazorApp` or `Blazor Server` templates) Identity auth tutotial (new way, .net 8)? register, login, logout features

    • @christopherbell7186
      @christopherbell7186 3 месяца назад

      That sounds like a challenge! Not sure, but perhaps I will...

    • @JohnSmith-yr7ih
      @JohnSmith-yr7ih 3 месяца назад

      @@christopherbell7186 yes, it is a challenge :) microsoft just in March updated docs so old tutorials are not relevant. it should be easy but i did not succeeded :(

    • @mrt7948
      @mrt7948 3 месяца назад

      I thought I would request the same. I completed his server project tutorial, and it was exactly what I needed to start with blazor. I was able to finish a pharmacy software based on his structure. Thank you Mr Cristopher Bell. Bless you.

  • @Duelweb
    @Duelweb 4 месяца назад

    When I see "Christopher Bell" pop up in my feed, I take note! You always explain things succinctly, clearly and don't take anything for granted. Very well-done mate! Much appreciated.

  • @ronaldjohnson4470
    @ronaldjohnson4470 4 месяца назад

    Thank you sir.

  • @vladimirlvov1111
    @vladimirlvov1111 4 месяца назад

    Thank you for excellent content in your videos and in the blog. I found it very helpful.

  • @scotolivera8207
    @scotolivera8207 4 месяца назад

    Thank you for this Great Tutorial, I there a way to have the source code of this project that used with Sqlite & Dapper?

    • @christopherbell7186
      @christopherbell7186 4 месяца назад

      Yes. I have a website where I give details of these videos. The page you need is: blazorcode.uk/countriesandcitieswasm/crud-operations/ and at the bottom of the page you will see a link to a further page called 'Code'. This is where you can get the code for the relevant post. I hope this helps, and thanks for your comment. Chris

  • @MichaelTroulis
    @MichaelTroulis 4 месяца назад

    Thank you for sharing this Christopher Bell. I've learned a lot from your videos and look forward to seeing what else you come up with in the future. Keep up the great work!

  • @RouteDeTours
    @RouteDeTours 4 месяца назад

    Hello, I really hope this does not come across as a criticism because it most certainly isn't meant to be. Your videos are great and have helped me far more than anything else on RUclips. I hope you will allow me to ask this question. First of all, can we assume that creating a website is a complete waste of time and effort unless it is published? Given this fact, why out of the hundreds of Blazor tutorial videos, is it extremely rare to come across one that explains how to publish the example covered? Publishing anything but the simplest Hello World site is always extremely complicated and requires detailed knowledge of every single step. I for one often spend hours trying but end up giving up in frustration. I would really like to publish your Countries example but as usual, it turns out that I have spent a couple of days for nothing. I would really appreciate your opinion on why publishing instructions are considered an insult to people's intelligence. Many thanks in anticipation of your thoughts.

  • @medemayday
    @medemayday 4 месяца назад

    For some reason it didn't seem to work with only the documentation. But with your explanation, I implementend hangfire into my project and now it works. Thank you!

    • @christopherbell7186
      @christopherbell7186 4 месяца назад

      You're welcome! I'm glad you found the video helpful.

  • @fabiyanav5948
    @fabiyanav5948 4 месяца назад

    💯 Excellent Sir.

  • @karimishaahin
    @karimishaahin 5 месяцев назад

    I cant see where you created the EmailService. Is that a part of hangfire or your code?

    • @christopherbell7186
      @christopherbell7186 5 месяцев назад

      Hi, I created the EmailService in part 10 of this series (ruclips.net/video/ukuL_L37nlo/видео.html). Good luck!

  • @s.n.t.8080
    @s.n.t.8080 6 месяцев назад

    Thanks a lot for this useful video.❤

  • @richardwilliamson9433
    @richardwilliamson9433 7 месяцев назад

    Please post your patreon/way to sponsor your work.

    • @christopherbell7186
      @christopherbell7186 7 месяцев назад

      I produce these videos simply because I enjoy doing them - not for any other reason. No sponsorship needed!

  • @richardwilliamson9433
    @richardwilliamson9433 7 месяцев назад

    Great work! Can you post the solution file please?

    • @christopherbell7186
      @christopherbell7186 7 месяцев назад

      You can find the files for this video on the blog post at blazorcode.uk/wallareacalculator/database/index.html From Part 3 onwards I have put the code on Github. See the Releases at: github.com/ChristopherJBell/BlazorWallAreaCalculator/releases. I hope this helps...

  • @phillip1986
    @phillip1986 8 месяцев назад

    🤗 "promosm"

  • @atirah14
    @atirah14 8 месяцев назад

    I posted a comment. Not visible here.

  • @STANNco
    @STANNco 8 месяцев назад

    how is it, it's so hard to find documentation for this anywhere but random youtube videos. Thanks a lot! But god damn their documentation is so dogshit

  • @mtranchi
    @mtranchi 8 месяцев назад

    We should have a wink in the description to a playlist for this series.

  • @atirah14
    @atirah14 8 месяцев назад

    Completed this one as well. Fairly straightforward until now. Have you used postgres as a database?

    • @christopherbell7186
      @christopherbell7186 8 месяцев назад

      Well done. No, I haven't ever used Postgres, but it looks interesting - perhaps I should take a look.

  • @gamingarea.eltayeb
    @gamingarea.eltayeb 9 месяцев назад

    How can i open db file in sqlcipher File has password and i can't open it ?

    • @christopherbell7186
      @christopherbell7186 9 месяцев назад

      I'm afraid I am not familiar with SQLCipher. Does their documentation help? www.zetetic.net/sqlcipher/documentation/ or look at this StackOverflow question & answer stackoverflow.com/questions/52215911/how-to-use-sqlcipher-in-net

  • @atirah14
    @atirah14 9 месяцев назад

    Completed this one. I hope i will complete this series.

  • @abdokha6227
    @abdokha6227 9 месяцев назад

    Whay Using SQLLite ?

    • @christopherbell7186
      @christopherbell7186 9 месяцев назад

      Good question! My preference would naturally be Microsoft SQL Server, (it has the advantage of stored procedures for a start), but if one wants to publish to Azure there is (potentially) a charge for Microsoft SQL Server, but SQLite is free.

  • @carlselrahc4163
    @carlselrahc4163 9 месяцев назад

    Very Cool Christopher! You've done it again! Thank you!!!!

  • @hhadid9943
    @hhadid9943 9 месяцев назад

    Welcome back!!😊

    • @christopherbell7186
      @christopherbell7186 9 месяцев назад

      Thank you! I've been planning this for ages, but haven't found the time to do it!

  • @OggVorbis69
    @OggVorbis69 9 месяцев назад

    looking forward to the next part

  • @Duelweb
    @Duelweb 9 месяцев назад

    Nice one! 👍

  • @yohangarcia01
    @yohangarcia01 9 месяцев назад

    Great! Thanks a lot for sharing this

  • @carlselrahc4163
    @carlselrahc4163 10 месяцев назад

    Everything so far up to Part 5 has worked great! Thank you for sharing your knowledge and the hard work you put as modifying an application originally written by someone else (and make it work) is not easy! I have a question: When "add the following in the // Add services to the container... builder.Services.AddSyncfusionBlazor(options => { options.IgnoreScriptIsolation = true; });" I get compile error since "options" appears to be missing: Cannot convert lambda expression to type "bool" because it is not a delegate type". Microsoft .NET framework Ver 4.8.04161 in VS 2022 (64-bit) - Preview.

    • @christopherbell7186
      @christopherbell7186 10 месяцев назад

      This is due to 'options.IgnoreScriptIsolation' now being obsolete. I think you should be able simply to have the line: builder.Services.AddSyncfusionBlazor(); Good luck!

    • @carlselrahc4163
      @carlselrahc4163 9 месяцев назад

      That worked! I appreciate your response! In case anyone opts for Version 23.1.36 Syncfusion Controls instead of Syncfusion Blazor version 18.4.0 you will need to replace the following methods with ShowAsync and HideAsync (used in the next Lesson: Index Page -Getting Started) from: await this.DialogAddEditPerson.Show(); To: await this.DialogAddEditPerson.ShowAsync(); From: await this.DialogAddEditPerson.Hide(); To: await this.DialogAddEditPerson.HideAsync(); Thank you Christopher!

    • @christopherbell7186
      @christopherbell7186 9 месяцев назад

      Thank you for adding the extra tips for those using later versions of Syncfusion. That really helps and is much appreciated.

  • @pgnutz
    @pgnutz 10 месяцев назад

    Hello, how can I download these source code without being through the text of the article?

    • @christopherbell7186
      @christopherbell7186 10 месяцев назад

      I have added the complete code to GitHub at github.com/ChristopherJBell/BlazorCountriesWasm. (I think this is complete - apart from appsettings.json containing the Syncfusion licence key - but I don't guarantee it!)

  • @manoharprabhu7076
    @manoharprabhu7076 10 месяцев назад

    Wow, excellent explanation, thanks

  • @carlselrahc4163
    @carlselrahc4163 10 месяцев назад

    Very Clear and well explained! You are a very good instructor! Thank you!

  • @jen0vanaka
    @jen0vanaka 10 месяцев назад

    Is Syncfusion's license for free? Can I use it on company projects?

    • @christopherbell7186
      @christopherbell7186 9 месяцев назад

      For individuals and companies with a turnover of less than $1million, yes it's free. See www.syncfusion.com/products/communitylicense. (Sorry for the delay in responding...)

  • @user-nd3ub7yn4p
    @user-nd3ub7yn4p 10 месяцев назад

    Your videos are just awesome for a new Blazor user. When I get to the end of your video and run my example I am getting this sfgrid44rwijlwszt_header_table immediately below the header ID and Name and before the table starts. Any idea what that is from?

    • @user-nd3ub7yn4p
      @user-nd3ub7yn4p 10 месяцев назад

      After a computer reboot the error message went away. Maybe it needs to do a reboot after starting syncfusion and entering the license key for the first time. Your videos are still super helpful though.

    • @christopherbell7186
      @christopherbell7186 10 месяцев назад

      Pleased to hear that you solved the problem. Well done. I don't think I have experienced the need to re-boot after entering the Syncfusion key. Odd.

  • @user-hb7ok5ci6f
    @user-hb7ok5ci6f 10 месяцев назад

    i tried doing this but the dialog box isn't visable at all. If i set it to true it appears when the page loads, But it won't appear with the click event

    • @christopherbell7186
      @christopherbell7186 10 месяцев назад

      I suspect you have something wrong with the ToolBarClickHandler (or the toolbar). Have a look at the video at around 14:10. You can also find all the code for this video at blazorcode.uk/birthdayreminders/friends-and-family/ Hopefully that will help.

  • @harrisonwell1719
    @harrisonwell1719 11 месяцев назад

    It's not possible to add company logo when using blazor wasm, Any Suggestions?

    • @christopherbell7186
      @christopherbell7186 11 месяцев назад

      Unfortunately I haven't attempted to do this with blazor wasm, so sadly I don't have any suggestions. It will be interesting to see if .NET 8 with its 'mixed modes' will provide an answer,

  • @DhirenPathak
    @DhirenPathak 11 месяцев назад

    Thanks Lot

  • @muhammadsalah-qr8yx
    @muhammadsalah-qr8yx 11 месяцев назад

    you saved my life. thank you

  • @caseyspaulding
    @caseyspaulding Год назад

    This is great Christopher! Thanks

  • @DChristop
    @DChristop Год назад

    Thanks for your nice video!!!